Laravel - Работа с базой данных
Здравствуйте, стремящиеся к вершинам разработчики! Я рад пригласить вас в увлекательное путешествие по миру Laravel и управления базами данных. Как某人, кто уже много лет преподаёт informatikу, я могу заверить вас, что овладение операциями с базами данных похоже на обучение езде на велосипеде - сначала это может показаться пугающим, но как только вы научитесь, вы начнёте легко передвигаться по своим проектам!
Подключение к базе данных
Давайте начнём с азов - подключения к базе данных. Представьте это как знакомство вашей программы Laravel с новым лучшим другом, базой данных. Они должны познакомиться, прежде чем начнут вместе работать!
Настройка
Сначала нам нужно сказать Laravel, где найти нашу базу данных и как к ней получить доступ. Laravel делает это super легко с помощью своего файла конфигурации. Откройте файл .env
в корне вашего проекта, и вы увидите что-то вроде этого:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Эти строки как будто дают Laravel карту к вашей базе данных. Давайте разберём её:
-
DB_CONNECTION
: Тип базы данных, которую вы используете. По умолчанию это MySQL, но Laravel поддерживает и другие. -
DB_HOST
: Место нахождения вашей базы данных. Для локальной разработки это usually ваш собственный компьютер (127.0.0.1). -
DB_PORT
: Номер doors, на который Laravel должен постучать, чтобы получить доступ к базе данных. -
DB_DATABASE
: Имя вашей базы данных. -
DB_USERNAME
иDB_PASSWORD
: Ваша秘密ная комбинация для доступа к базе данных.
Проверка подключения
Теперь, когда мы представили Laravel нашей базе данных, давайте убедимся, что они ладят. Мы можем сделать это с помощью простого командного файла:
php artisan tinker
Этот файл открывает интерактивную shell Laravel. Теперь давайте试着 подключиться:
DB::connection()->getPdo();
Если вы видите длинную строку из чисел и букв, поздравляю! Ваша программа Laravel и база данных теперь лучшие друзья.
Создание таблиц
Теперь, когда мы подключены, пришло время создать несколько таблиц. В мире баз данных таблицы resemble spreadsheets, где мы храним наши данные.
Миграции
Laravel использует что-то называемое "миграциями" для создания и изменения таблиц. Представьте себе миграции как машину времени для вашей базы данных - они позволяют вам передвигаться вперёд и назад в истории вашей базы данных.
Чтобы создать миграцию, используйте эту команду artisan:
php artisan make:migration create_users_table
Эта команда creates a new file в папке database/migrations
. Откройте его, и вы увидите что-то вроде этого:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Это как чертёж вашей таблицы. Давайте разберём её:
-
$table->id()
: Создаёт автоматически увеличивающийся столбец ID. -
$table->string('name')
: Создаёт столбец для хранения имён. -
$table->string('email')->unique()
: Создаёт уникальный столбец для электронной почты. -
$table->timestamp('email_verified_at')->nullable()
: Создаёт قابل для опционального использования столбец метки времени. -
$table->string('password')
: Создаёт столбец для хранения паролей. -
$table->rememberToken()
: Создаёт столбец для хранения "remember me" токенов. -
$table->timestamps()
: Создаёт столбцыcreated_at
иupdated_at
.
Чтобы действительно создать эту таблицу в вашей базе данных, выполните:
php artisan migrate
И вуаля! Ваша таблица создана.
Вставка данных
Теперь, когда у нас есть таблица, lets putting some data into it. Есть несколько способов сделать это в Laravel.
Использование Eloquent
Eloquent - это встроенный ORM (Object-Relational Mapping) Laravel. Он resembles a translator между вашим PHP кодом и вашей базой данных. Вот как вы можете использовать его для вставки данных:
use App\Models\User;
$user = new User;
$user->name = 'John Doe';
$user->email = '[email protected]';
$user->password = bcrypt('password');
$user->save();
В этом примере мы создаём новый объект User, устанавливаем его свойства и затем сохраняем его в базе данных. Это так просто!
Использование Query Builder
Если вы предпочитаете более SQL-подобный подход, вы можете использовать Query Builder Laravel:
DB::table('users')->insert([
'name' => 'John Doe',
'email' => '[email protected]',
'password' => bcrypt('password'),
]);
Этот метод более direct - мы говорим Laravel точную таблицу, в которую вставлять, и какие данные использовать.
Получение данных
Теперь, когда мы inserted data в нашу базу данных, lets learn how to get it back out.
Использование Eloquent
Чтобы retrieve все пользователи:
$users = User::all();
Чтобы найти конкретного пользователя:
$user = User::find(1);
Чтобы retrieve пользователи с условиями:
$users = User::where('name', 'John Doe')->get();
Использование Query Builder
Чтобы retrieve все пользователи:
$users = DB::table('users')->get();
Чтобы найти конкретного пользователя:
$user = DB::table('users')->where('id', 1)->first();
Чтобы retrieve пользователи с условиями:
$users = DB::table('users')->where('name', 'John Doe')->get();
Обновление данных
Обновление данных так же легко, как и вставка. Давайте рассмотрим несколько методов.
Использование Eloquent
$user = User::find(1);
$user->name = 'Jane Doe';
$user->save();
Использование Query Builder
DB::table('users')
->where('id', 1)
->update(['name' => 'Jane Doe']);
Удаление данных
Finally, lets learn how to remove data from our database.
Использование Eloquent
$user = User::find(1);
$user->delete();
Использование Query Builder
DB::table('users')->where('id', 1)->delete();
И вот так! Вы только что узнали основы работы с базами данных в Laravel. Помните, что практика делает мастера. Не бойтесь экспериментировать и пробовать различные запросы. Before you know it, you'll be a database wizard!
Here's a quick reference table of the methods we've covered:
Operation | Eloquent | Query Builder |
---|---|---|
Insert | $user = new User; $user->save(); |
DB::table('users')->insert([]); |
Retrieve All | User::all(); |
DB::table('users')->get(); |
Retrieve One | User::find(1); |
DB::table('users')->where('id', 1)->first(); |
Update | $user->save(); |
DB::table('users')->where('id', 1)->update([]); |
Delete | $user->delete(); |
DB::table('users')->where('id', 1)->delete(); |
Happy coding, future database masters!
Credits: Image by storyset