Жадная загрузка по умолчанию в Laravel
Иногда требуется всегда подгружать
некоторые отношения при извлечении модели.
Для этого в модели задают свойство
$with.
Сделаем так, чтобы категории всегда загружались вместе со своими постами:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $with = ['posts'];
public function posts()
{
return $this->hasMany(Post::class);
}
}
?>
Теперь при обращении к постам лишнего запроса не будет:
<?php
$category = Category::find(1);
foreach ($category->posts as $post) {
dump($post->title);
}
?>
Уже загруженную коллекцию постов можно фильтровать в PHP без нового запроса к базе:
<?php
$category = Category::find(2);
$posts = $category->posts->where('id', '>', 2);
dump($posts);
?>
Для вашей модели юзера задайте
жадную загрузку профиля по умолчанию
через $with.