使用此:
profile = User::find($user)->with('profile')->first();
将返回SELECT * FROM profiles
的查询,而不是选择属于找到的用户的ID的个人资料。
我的用户模型如下:
public function profile() {
return $this->hasOne('App\Models\UserProfile', 'user_id');
}
为什么不添加where
条件?
答案 0 :(得分:1)
find($id)
真正做的是扩展您的查询,如下所示:
// from
User::find($user)
// to
User::where('id', $user)->take(1)->get('*')->first()
换句话说:它创建查询,将其限制在第一行,获取该行 - 返回一个集合 - 然后返回该集合中的第一个项目。
这意味着您的with('profile')
会附加到对象,而不是查询构建器,然后再对first()
进行User::with('profile')->find($user);
次调用。
你应该做的是
mysql
......我认为它有效,但我还没有测试过它。 :)