Laravel Выборка определенных полей в отношении

MaksM

Новичок
Подскажите, можно ли как-то организовать запрос, чтобы получить только нужные поля при использовании жадной загрузки?
Например есть таблица users [id, name, email и т.д.] и таблица news [id, user_id, title, text и т.д]. В моделях созданы связи.
Получаю записи: $news = News::with('user')->get(); Вот мне, к примеру нужно получить только поле "name" из таблицы user. Как это сделать?
 

Alexey Mezenin

Новичок
Используешь select() как обычно. Единственный нюанс - не забывай включать в select внешние ключи, если они есть, а также ID. Иначе связь не загрузится. Для твоего запроса все довольно просто:

Код:
News::with(['user' => function ($q) {
    $q->select(['name', 'id']);
}])->get()
 

MaksM

Новичок
Большое спасибо. Вообщем я сам затупил. Я конечно применял эту схему и она не работала, это и заставило меня обратиться сюда за помощью, но Ваш пост заставил меня продолжить ковыряния и до меня дошло, что в выборке я не использовал поле id, а без него возвращается null, т.е. в функции я использовал

$q->select(['name', 'emal']);

а надо

$q->select(['id','name', 'emal']);

и тогда все работает ))
 
Сверху