Жадная загрузка по умолчанию в Laravel


Иногда требуется постоянная загрузка некоторых отношений при извлечении модели. Для этого нужно определить свойство $with в модели.

Для примера давайте сделаем так, чтобы категории всегда загружались вместе со своими постами:

<?php
class Category extends Model
{
protected $with = ['post'];

public function posts()
{
return $this->hasMany(Post::class);
}
}
?>
Теперь при переборе постов лишнего запроса не будет:

<?php
class CategoryController extends Controller
{
public function show()
{
$category = Category::find(1);

foreach ($category->posts as $post) {
dump($post); // лишнего запроса не будет
}
}
}
?>