Laravel. Eloquent ORM. Основы

screenshot-laravel com 2016-03-28 10-36-38 А вот это надо разобрать подробно. Это очень важно и будет использоваться на каждом шагу.

Для использования Eloquent ORM нужно создать модель.

Создание модели
———————————-
И лучше всего создать её с помощью утилиты artisan

php artisan make:model User

В результате выполнения команды появится файл /app/User.php следующего содержания

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //
}

Для начала оставим класс пустым.

Немного слов о таблице
——————————————
Естественно нужно создать таблицу. И крайне желательно создавать её с помощью миграции

Есть умолчания, о которых надо знать.

  • В таблице должно быть поле ID, которое будет выполнять функцию первичного ключа
  • По-умолчанию модель должна быть названием сущности в единственном числе, а таблица во-множественном

Всё это можно переопределить, но нужно ли?

Базовые операции
———————————————
Выборка

// Вытаскиваем все записи из таблицы
$users = User::all();  
foreach ($users as $user)
{
    echo $user->name;
}

// Вытаскиваем конкретную запись по ID
$user = User::find(1);

Также можно использовать Query Builder

$users = User::where('votes', '>', 100)->limit(10)->get();

Insert, Update, Delete

Тут всё довольно просто

$user = new User;
$user->name = 'John';
$user->save();

$user = User::find(1);
$user->email = 'john@foo.com';
$user->save();

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

Soft Deleting
——————————
А вот тут меня жестко пробила ностальгия.

Если вы работали со старыми реляционными БД файлового типа, если вы застали Clipper/Paradox/dBASE/FoxPro (о чёрт, какой я уже старый…), то наверняка сталкивались с тем, что запись сначала помечается удалённой, и лишь потом удаляется.

В той технологии это был такой костыль, который позволял совместно работать нескольким с одним файлом БД. Но при этом была возможность чудесным образом восстановить удалённую запись!

Так вот именно этот функцонал тут реализован. Подробности не пишу, Если что — читать доки.
Не знаю, зачем это может пригодиться в наше время.

Timestamps
———————————
По умолчанию при составлении миграции в таблицу добавляются поля created_at и updated_at. Если вы их сознательно не удаляли, то сможете в любой момент получить дату/время создания/изменения записи.

Для этого не надо ничего делать. ORM делает всё сам. Вам остаётся только взять эти поля и проанализировать.

Очень полезная штука.

ПРодолжение следует.