我有以下查询:
$objects = Object::with("prototypes");
正如您所见,我确实要求对Object
进行建模并将其与prototypes
一起加入。
prototypes
表具有结构:
prototype_id
name
如何在上述查询中设置where
,如:
$objects = Object::with("prototypes")->where("prototype_id", 3);
对象模型:
public function prototypes()
{
return $this->belongsToMany('App\Prototype', 'object_prototype', 'object_id');
}
原型模型:
public function objects(){
return $this->belongsToMany("App\Object", "object_prototype", "prototype_id", "object_id");
}
答案 0 :(得分:3)
如果在您的Eloquent模型中正确设置了关系,则可以使用WhereHas
函数查询关系存在。
$objects = Object::with('prototypes')
->whereHas('prototypes', function ($query) {
$query->where('prototype_id', 3);
})
->get();
答案 1 :(得分:0)
添加@Jerodev答案。
如果您需要更多电量,可以使用
whereHas
和orWhereHas
方法放置"其中"你的条件有疑问。 这些方法允许您向a添加自定义约束 关系约束,例如检查评论的内容:
// Retrieve all posts with at least one comment containing words like foo%
$posts = Post::whereHas('comments', function ($query) {
$query->where('content', 'like', 'foo%');
})->get();
您可以阅读有关Eloquent Relationships
的更多信息在您的情况下,您还可以构建一个类似的查询。
Object::whereHas('prototypes', function ($query)){
$query->where('prototype_id', 3);
})->get();