ฉันมีสองตารางและUser
Post
หนึ่งUser
สามารถมีจำนวนมากposts
และเป็นหนึ่งเป็นเพียงคนเดียวpost
user
ในUser
แบบจำลองของฉันฉันมีhasMany
ความสัมพันธ์ ...
public function post(){
return $this->hasmany('post');
}
และในpost
แบบจำลองของฉันฉันมีbelongsTo
ความสัมพันธ์ ...
public function user(){
return $this->belongsTo('user');
}
ตอนนี้ฉันต้องการเข้าร่วมสองตารางนี้โดยใช้Eloquent with()
แต่ต้องการคอลัมน์เฉพาะจากตารางที่สอง ฉันรู้ว่าฉันสามารถใช้ตัวสร้างแบบสอบถามได้ แต่ฉันไม่ต้องการ
เมื่ออยู่ในPost
รูปแบบที่ฉันเขียน ...
public function getAllPosts() {
return Post::with('user')->get();
}
มันเรียกใช้แบบสอบถามต่อไปนี้ ...
select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
แต่สิ่งที่ฉันต้องการคือ ...
select * from `posts`
select id,username from `users` where `users`.`id` in (<1>, <2>)
เมื่อฉันใช้ ...
Post::with('user')->get(array('columns'....));
มันจะส่งกลับคอลัมน์จากตารางแรกเท่านั้น ฉันต้องการคอลัมน์เฉพาะที่ใช้with()
จากตารางที่สอง ฉันจะทำสิ่งนั้นได้อย่างไร
$query->select('id','username');
ฉันได้รับTrying to get property of non-object