Приёмы работы с Eloquent, о которых вы еще не слышали.

01: Указывайте атрибуты в методе find()

При использовании методов find() и findOrFail() во втором аргументе вы можете указать нужные столбцы.

$user = AppUser::find(1, ['name', 'age']);
$user = AppUser::findOrFail(1, ['name', 'age']);

 

02: Клонируйте модель

Вы можете склонировать модель, используя replicate(). Это создаст новую копию модели.

$user = AppUser::find(1);
$newUser = $user->replicate();
$newUser->save();

 

03: Проверьте модели на идентичность

Используя метод is() можно узнать имеют ли две модели один ID и одну таблицу.

$user = AppUser::find(1);
$sameUser = AppUser::find(1);
$diffUser = AppUser::find(2);
$user->is($sameUser); // true
$user->is($diffUser); // false

 

04: Перезагрузка модели

Можно перезагрузить модель, чтобы получить обновленные значения из базы данных.

$user = AppUser::first();
$user->name; // John
// запись пользователя была обновлена в другом потоке. например, поле 'name' изменилось на Peter.
$user->refresh();
$user->name; // Peter

 

05: Загрузка свежей модели

Для получения нового экземпляра модели из базы данных используйте fresh().
Примечание: это не обновление текущей модели, а именно получение нового экземпляра.

$user = AppUser::first();
$user->name; // John
// запись пользователя была обновлена в другом потоке. например, поле 'name' изменилось на Peter.
$updatedUser = $user->fresh();
$updatedUser->name; // Peter
$user->name; // John

 

06: Сохранение модели с отношениями

Используйте push() для сохранения модели с её отношениями.

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('AppPhone');
    }
}
$user = User::first();
$user->name = "Peter";
$user->phone->number = '1234567890';
$user->push(); // Это обновит и пользователя и телефон в базе данных

 

07: Создайте свой столбец deleted_at

По умолчанию Laravel выполняет «мягкое удаление», используя столбец delete_at. Вы можете изменить это, создав свой собвственный столбец для этих целей.

class User extends Model
{ use SoftDeletes; * Название столбца "deleted at"
  * * @var string */ const DELETED_AT = 'is_deleted';
}

или определив читателя:

class User extends Model
{ use SoftDeletes; public function getDeletedAtColumn() { return 'is_deleted'; }
}

 

08: Получение измененных атрибутов модели

Используя метод getChanges() вы можете получить измененные атрибуты модели.

$user->getChanges();
//[ "name" => "Peter", ]

 

09: Проверьте, менялись ли данные в модели

С помощью метода isDirty() можно проверить изменялась ли модель.

$user = AppUser::first();
$user->isDirty(); //false
$user->name = "Peter";
$user->isDirty(); //true

Вы также можете проверить изменение определенных атрибутов:

$user->isDirty('name'); //true
$user->isDirty('age'); //false

 

10: Получение исходных значений

После изменения записей в Eloquent вы можете получить исходное значение атрибута при помощи метода getOriginal().

$user = AppUser::first();
$user->name; //John
$user->name = "Peter"; //Peter
$user->getOriginal('name'); //John
$user->getOriginal(); //Исходное значение $user

 

Автор: Jebran Ali
Перевод: Demiurge Ash

Источник: laravel.demiart.ru