假设我有两个表班次和用户。每个shift
都有一个与之关联的用户。我想获得班次和用户的JSON回报。我尝试了以下命令:
return Shift::find($id)->with('User')->get()
这不起作用。但是,这样做:
return Shift::where('id', '=', $id)->with('User')->get()
为什么呢?我如何使用第一个命令?
答案 0 :(得分:2)
get
和find
都是执行方法。也就是说,它们将触发查询并返回结果。基本上,你不应该在一次通话中使用其中两个。它是find
,get
或first
,而不是它们的组合。
find
将返回单个模型,并根据模型的主键创建条件,通常为where('id', '=', $id)
get
将返回一组模型。
first
将返回单个模型。
听起来你需要:
return Shift::with('user')->find($id);
user
是Shift
模型上的关系方法。
public function user()
{
return $this->belongsTo('User');
}