Laravel - Работа с базой данных

Здравствуйте, стремящиеся к вершинам разработчики! Я рад пригласить вас в увлекательное путешествие по миру Laravel и управления базами данных. Как某人, кто уже много лет преподаёт informatikу, я могу заверить вас, что овладение операциями с базами данных похоже на обучение езде на велосипеде - сначала это может показаться пугающим, но как только вы научитесь, вы начнёте легко передвигаться по своим проектам!

Laravel - Working With Database

Подключение к базе данных

Давайте начнём с азов - подключения к базе данных. Представьте это как знакомство вашей программы 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