我有两个表,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
),以实际检索所需的结果。我在我的代码中遗漏了这一点,因此无法找到任何结果,真是太傻了!希望这能帮助其他遇到同样问题的人。 - Azirius