Mam dwa stoły User
i Post
. Jeden User
może mieć wiele posts
i jeden post
należący do tylko jednego user
.
W moim User
modelu mam hasMany
relację ...
public function post(){
return $this->hasmany('post');
}
A w moim post
modelu mam belongsTo
relację ...
public function user(){
return $this->belongsTo('user');
}
Teraz chcę połączyć te dwie tabele za pomocą, Eloquent with()
ale chcę konkretnych kolumn z drugiej tabeli. Wiem, że mogę korzystać z Konstruktora zapytań, ale nie chcę.
Kiedy w Post
modelu piszę ...
public function getAllPosts() {
return Post::with('user')->get();
}
Uruchamia następujące zapytania ...
select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
Ale chcę to ...
select * from `posts`
select id,username from `users` where `users`.`id` in (<1>, <2>)
Kiedy używam ...
Post::with('user')->get(array('columns'....));
Zwraca tylko kolumnę z pierwszej tabeli. Chcę konkretnych kolumn przy użyciu with()
z drugiej tabeli. Jak mogę to zrobić?
$query->select('id','username');
, otrzymywałemTrying to get property of non-object