Laravel получает записи из модели с определенными данными и отношениями

#php #laravel

#php #laravel

Вопрос:

У меня есть сообщение модели:

 protected $with = ['user']

public function user() {
    return $this->belongsTo(User::class);
}
  

Когда на контроллере я устанавливаю только заголовок и изображение:

 $posts = Post::get(['title', 'image']);
  

Пользователь отношения возвращает мне значение null.

 @foreach($posts as $post)
   User: {{ $post->user->name }} //null
@endforeach
  

Почему? Если я удаляю массив из get метода, то отношение работает, если я устанавливаю массив, то пользователь отношения возвращает мне значение null. Пожалуйста, помогите.

Ответ №1:

При Post::get(['title', 'image']); этом вы указываете, что вам нужны только эти столбцы.

Если вы хотите использовать этот подход,

 $posts = Post::with('user')->get(['title', 'image']);
  

Или вы можете включить user не с protected $with помощью свойства, а вместо protected $appends этого всегда добавлять его в свою модель в качестве поля по умолчанию

 // In Post Class:
protected $appends = "user";

// Then this should work
$posts = Post::get(['title', 'image', 'user']);