ฉันมีสองตารางและUser Postหนึ่งUserสามารถมีจำนวนมากpostsและเป็นหนึ่งเป็นเพียงคนเดียวpostuser
ใน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