Laravel 4 Eager正在加载:: find()

时间:2014-04-04 03:52:26

标签: laravel-4

假设我有两个表班次用户。每个shift都有一个与之关联的用户。我想获得班次和用户的JSON回报。我尝试了以下命令:

return Shift::find($id)->with('User')->get()

这不起作用。但是,这样做:

return Shift::where('id', '=', $id)->with('User')->get()

为什么呢?我如何使用第一个命令?

1 个答案:

答案 0 :(得分:2)

getfind都是执行方法。也就是说,它们将触发查询并返回结果。基本上,你不应该在一次通话中使用其中两个。它是findgetfirst,而不是它们的组合。

find将返回单个模型,并根据模型的主键创建条件,通常为where('id', '=', $id)

get将返回一组模型。

first将返回单个模型。

听起来你需要:

return Shift::with('user')->find($id);

userShift模型上的关系方法。

public function user()
{
    return $this->belongsTo('User');
}