Eloquent ORM в Laravel является мощным инструментом для работы с базами данных, предоставляя простой и удобный способ взаимодействия с таблицами базы данных через объектно-ориентированный интерфейс. В этом руководстве мы рассмотрим, как использовать Eloquent ORM для создания моделей, связывания моделей, выполнения запросов и миграций.

1. Создание модели

Для создания модели используйте команду make:model. Например, для создания модели Post:

php artisan make:model Post

Это создаст файл Post.php в директории app/Models. В этом файле вы можете определить свойства и методы, которые будут использоваться для взаимодействия с таблицей posts в базе данных.

2. Создание миграции

Миграции позволяют вам определить структуру таблицы базы данных. Создайте миграцию для модели Post:

php artisan make:migration create_posts_table --create=posts

Откройте созданный файл миграции в database/migrations и определите структуру таблицы:

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('body');
        $table->timestamps();
    });
}

Запустите миграцию:

php artisan migrate

3. Связывание моделей

Eloquent позволяет легко связывать модели между собой. Например, если у вас есть модель User и модель Post, вы можете установить отношение "один ко многим" между пользователями и их постами.

В модели User добавьте метод posts:

public function posts()
{
    return $this->hasMany(Post::class);
}

В модели Post добавьте метод user:

public function user()
{
    return $this->belongsTo(User::class);
}

4. Выполнение запросов

Eloquent предоставляет удобный интерфейс для выполнения запросов к базе данных. Например, чтобы получить все посты пользователя:

$user = User::find(1);
$posts = $user->posts;

Чтобы создать новый пост для пользователя:

$post = new Post(['title' => 'My First Post', 'body' => 'This is the content of my first post.']);
$user->posts()->save($post);

5. Работа с отношениями

Eloquent также позволяет легко работать с отношениями. Например, чтобы получить автора поста:

$post = Post::find(1);
$user = $post->user;

Или чтобы получить все посты, написанные пользователем:

$user = User::find(1);
$posts = $user->posts;

6. Запросы и условия

Eloquent предоставляет мощные возможности для выполнения запросов и условий. Например, чтобы получить посты, содержащие определенное слово:

$posts = Post::where('title', 'like', '%Laravel%')->get();

Или чтобы получить посты, написанные в определенный период:

$posts = Post::whereBetween('created_at', [$startDate, $endDate])->get();

7. Сохранение и обновление моделей

Сохранение новой модели:

$post = new Post(['title' => 'My New Post', 'body' => 'This is the content of my new post.']);
$post->save();

Обновление существующей модели:

$post = Post::find(1);
$post->title = 'Updated Title';
$post->save();

Это глубокое погружение в Eloquent ORM в Laravel, включая связывание моделей, запросы и миграции. Для более глубокого погружения в Eloquent рекомендуется изучить официальную документацию Laravel.