Я использую laravel 5.6 и хочу получить пользователя posts с comments (только поле id)
Модель пользователя
public function posts()
{
return $this->hasMany('App\Post');
}
Пост Модель
public function user()
{
return $this->belongsTo('App\User');
}
public function comments()
{
return $this->hasMany('App\Comment');
}
Модель комментария
public function post()
{
return $this->belongsTo('App\Post');
}
В моем контроллере я использую этот код, чтобы получать сообщения пользователей с их комментариями.
$posts = $request->user()->posts()->with(['comments' => function($query) {
$query->select(['id']);
}]);
Но это не работает ...
Когда я комментирую $query->select(['id']);, он работает нормально, но возвращает все поля модели Comment. Я хочу выбрать только поле id.
Что мне здесь не хватает?
@MasoudHaghbin нет, он возвращает нуль
попробуйте $ query-> select ('id')
@MasoudHaghbin Уже пробовал ...
как насчет этого $ request-> user () -> posts-> with (['comments' => function ($ query)
@MasoudHaghbin Посмотрите вопрос. я уже использую это ;-)
сообщение не имеет ()
Это вернет ошибку
Позвольте нам продолжить обсуждение в чате.






Если вы хотите только один столбец, вы можете использовать ->pluck('id')
https://laravel.com/docs/5.6/collections#method-pluck
pluck получает только значение поля.
Вам также необходимо выбрать столбец внешнего ключа (необходим для сопоставления результатов):
$posts = $request->user()->posts()->with('comments:id,post_id');
это не сработает, если вам нужен только столбец name!
У вас есть ошибки?