现在我有3张桌子
衬衫
id type
颜色
id color
color_shirt
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时,它似乎没有示例。有谁知道答案?
答案 0 :(得分:0)
尝试在最后添加 - > get()或 - > first(),如下所示:
$color = Shirt::find('round_collar')->color()->where('color','=','red')->get();
答案 1 :(得分:0)
您可以使用' Eager Loading Constraints' (http://laravel.com/docs/eloquent#eager-loading)
Shirt::find('round_collar')->with(array('colors' => function($query) {
$query->where('color', '=', 'red');
}))->first();
作为旁注,我怀疑你是否想以这种方式使用find(' round_collar')。你可能想要在哪里('领',' =',' round')代替。