У меня есть отношения 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
Post::select('id', 'title', 'user_id')
->with(array('user'=>function($query){
$query->select('id','username');
}))->get();
Вам нужен внешний ключ для поддержания отношений между двумя моделями.
Обычно я так делаю.
Post::select('id','title','user_id')->with('user:id,username')->get();
Для этого вам нужно правильно определить отношения и выбрать внешний ключ из таблицы записей.