在Laravel Eloquent中,为什么选择不正确(没有条件)?

时间:2016-08-08 07:59:08

标签: php mysql laravel eloquent

使用此:

profile = User::find($user)->with('profile')->first();

将返回SELECT * FROM profiles的查询,而不是选择属于找到的用户的ID的个人资料。

我的用户模型如下:

public function profile() {
    return $this->hasOne('App\Models\UserProfile', 'user_id');
}

为什么不添加where条件?

1 个答案:

答案 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

......我认为它有效,但我还没有测试过它。 :)