我无法在Laravel中使用Eloquent找到如何将所有元素与其他元素联系起来。 我有物质和内容,并希望所有与物质相关的内容名称为' subst'。
我的关系物质 - 内容:
public function relation ()
{
return $this->belongsToMany('Substance', 'contents_substances', 'id_contents', 'id_substances');
}
public function relation ()
{
return $this->belongsToMany('Content', 'contents_substances', 'id_contents', 'id_substances');
}
我知道我可以获得与一种物质相关的所有内容:
$content = Substance::find(1)->relation()->get();
但是可以获得与一组物质相关的所有内容吗?
类似的东西:
$sub = Substance::where('name', '=', 'subst'); // get all the substances with that name
$contents =$sub->relation()->get(); // ???
感谢任何帮助!
答案 0 :(得分:0)
最简单的方法是从另一个角度开始查询。在这种情况下来自Content
。然后,whereHas
会根据substances
关系添加约束:
$contents = Content::whereHas('substances', function($q){
$q->where('name', 'subst');
})->get();