雄辩的建筑回归太多结果

时间:2014-02-13 17:09:14

标签: laravel eloquent

我的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;
}

1 个答案:

答案 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');
}