Выберите конкретные столбцы из обеих связанных таблиц / моделей

У меня есть отношения N x 1, Post x User, Post-> User имеет отношение, подобное следующему:

Post.php (модель):

....
public function user() {
return $this->belongsTo('User');
}
....

Я хочу выбрать только id а также username от модели пользователя, когда я извлекаю каждое сообщение, но я также хочу только id а также title из сообщения (не каждый столбец из модели сообщения).

С этим решением:

return Post::with(array('user'=>function($query){
$query->select('id','username');
}))->get();

Я могу получить id а также username от Userно я также извлекаю все столбцы из Post модель, а не то, что я хочу, так что попробовал:

return Post::with(array('user'=>function($query){
$query->select('id','username');
}))->select(['id', 'title'])->get();

Хотя безуспешно, User стал нулевым, и я остался с id а также title из почты.

Я возвращаю ответ JSON, если это актуально.

Замечания: Я не хочу, чтобы что-то «жестко запрограммировано» в моем файле модели Post.php, потому что для одного и того же отношения могут потребоваться разные столбцы для разных ситуаций, поэтому я хотел бы сохранить отношение, если оно включено Post.php

2

Решение

Post::select('id', 'title', 'user_id')
->with(array('user'=>function($query){
$query->select('id','username');
}))->get();

Вам нужен внешний ключ для поддержания отношений между двумя моделями.

2

Другие решения

Обычно я так делаю.

Post::select('id','title','user_id')->with('user:id,username')->get();

Для этого вам нужно правильно определить отношения и выбрать внешний ключ из таблицы записей.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector