我的DesignsController中有以下代码:
public function show($id)
{
return Design::find($id)->with('variables')->get();
}
当我GET / designs / 1时,我应该回到id = 1的设计的json,但是我回到了所有当前的设计。
在设计模型中:
/* Define relationship between designs and variables */
public function variables()
{
return $this->hasMany('Variable');
}
routes.php:
Route::resource('designs', 'DesignsController');
我在这里做错了什么?
编辑:更多信息。只要我点击了实际设计的id,我就会得到所有结果,所以它似乎是根据id找到结果,然后返回所有结果。
如果我删除->with('variables')->get();
,那么这可行,但我也需要变量。这是设计模型:
class Design extends Eloquent {
/* Define relationship between designs and variables */
public function variables()
{
return $this->hasMany('Variable');
}
/* Define relationship between designs and variables */
public function user()
{
return $this->belongsTo('User');
}
}
变量模型:
class Variable extends Eloquent {
public $timestamps = false;
}
答案 0 :(得分:1)
您正在错误地执行“with”语句:
急切加载:
public function show($id)
{
return Design::with('variables')->find($id);
}
实际上我认为你的问题是在find()之后调用get(),因为find已经返回了一个模型。应该在构建的查询结束时调用Find,因为它实际上在其中调用了get()。
Lazy-Eager替代方案:
public function show($id)
{
return Design::find($id)->load('variables');
}