Laracode
Laracode

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

Знаете ли вы, что в Laravel с помощью метода push можно сохранить модель и все связанные с ней отношения одним действием, без необходимости обрабатывать каждую связь отдельно? 🚀

<?php

$post = Post::find(1);

$post->comments[0]->message = 'Сообщение';
$post->comments[0]->author->name = 'Имя автора';

// Вместо сохранения отдельных моделей
$post->comments[0]->author->save();
$post->comments[0]->save();

// Вы можете сохранить модель и все ее отношения
$post->push();

Eloquent метод «withCount»

Знаете ли вы, что с помощью метода «withCount» можно получить количество связанных отношений без их загрузки? Это очень полезно, например, при отображении статистики 🚀.

<?php

$users = User::query()
    ->withCount(['posts'])
    ->get();

// $users->posts_count

Более короткий «whereHas»

Хотя whereHas в Laravel отлично подходит для поиска записей на основе заданных отношений и дополнительных ограничений запроса, существует сокращение под названием «whereRelation», которое решает ту же задачу 🚀.

<?php

// До
Post::whereHas('comments', function ($query) {
    $query->where('created_at', '>', now()->subDay());
})->get();

// После
Post::whereRelation('comments', 'created_at', '>', now()->subDay())->get();

Ускоренная загрузка с определенными столбцами

Знаете ли вы, что при использовании ускоренной загрузки (eager loading) с отношениями вы можете указать именно те столбцы, которые вам нужны? Это уменьшит потребление памяти 🚀.

<?php

$posts = Post::query()
    ->with('author:id,name')
    ->get();