1

现在我有 3 张桌子

衬衫

id type 

颜色

id color

颜色衬衫

id color_id shirt_id  

衬衫型号

    public function colors()
{
    return $this->belongsToMany('Color');
}

衬衫控制器

 public function show($color)
    {
        $color = Shirt::find('round_collar')->color();
    }

它将返回所有颜色的圆领衬衫,如果我想返回特定颜色怎么办?

它不能以下列方式工作:

$color = Shirt::find('round_collar')->colors()->where('color','=','red');

当我参考文档http://four.laravel.com/docs/eloquent#many-to-many时,它似乎没有示例。有人知道答案吗?

4

2 回答 2

0

您可以使用“急切加载约束”(http://laravel.com/docs/eloquent#eager-loading

Shirt::find('round_collar')->with(array('colors' => function($query) {
    $query->where('color', '=', 'red');
}))->first();

作为旁注,我怀疑您是否想以这种方式使用 find('round_collar') 。您可能想要 where('collar', '=', 'round') 代替。

于 2013-06-11T22:59:41.053 回答
0

尝试在末尾添加 ->get() 或 ->first() ,如下所示:

$color = Shirt::find('round_collar')->color()->where('color','=','red')->get();
于 2013-05-24T08:54:09.187 回答