Выберите конкретный столбец в laravel eloquent с методом

Я использую 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.

Что мне здесь не хватает?

У вас есть ошибки?

Masoud Haghbin 06.06.2018 23:27

@MasoudHaghbin нет, он возвращает нуль

Saeed Vaziry 06.06.2018 23:27

попробуйте $ query-> select ('id')

Masoud Haghbin 06.06.2018 23:28

@MasoudHaghbin Уже пробовал ...

Saeed Vaziry 06.06.2018 23:30

как насчет этого $ request-> user () -> posts-> with (['comments' => function ($ query)

Masoud Haghbin 06.06.2018 23:34

@MasoudHaghbin Посмотрите вопрос. я уже использую это ;-)

Saeed Vaziry 06.06.2018 23:36

сообщение не имеет ()

Masoud Haghbin 06.06.2018 23:37

Это вернет ошибку

Saeed Vaziry 06.06.2018 23:37

Позвольте нам продолжить обсуждение в чате.

Masoud Haghbin 06.06.2018 23:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
9
2 358
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы хотите только один столбец, вы можете использовать ->pluck('id')

https://laravel.com/docs/5.6/collections#method-pluck

pluck получает только значение поля.

Saeed Vaziry 06.06.2018 23:31
Ответ принят как подходящий

Вам также необходимо выбрать столбец внешнего ключа (необходим для сопоставления результатов):

$posts = $request->user()->posts()->with('comments:id,post_id'); 

это не сработает, если вам нужен только столбец name!

parisssss 15.10.2018 17:17

Другие вопросы по теме