在Laravel中,多重关系的Where条件是指在多对多关系或多态关系中,通过Where条件来筛选相关模型的查询结果。
在多对多关系中,可以使用whereHas
方法来添加Where条件。该方法接受两个参数,第一个参数是关联关系的名称,第二个参数是一个闭包函数,用于定义Where条件。闭包函数中的参数是关联模型的查询构造器,可以在其中使用where
方法来添加具体的Where条件。
以下是一个示例,假设有两个模型User
和Role
,它们之间存在多对多关系:
$users = User::whereHas('roles', function ($query) {
$query->where('name', 'admin');
})->get();
上述代码中,whereHas
方法用于筛选具有admin
角色的用户。roles
是User
模型中定义的多对多关联方法。
在多态关系中,可以使用whereHasMorph
方法来添加Where条件。该方法接受三个参数,第一个参数是关联关系的名称,第二个参数是关联模型的类型,第三个参数是一个闭包函数,用于定义Where条件。
以下是一个示例,假设有三个模型Post
、Video
和Comment
,它们之间存在多态关系:
$posts = Post::whereHasMorph('comments', ['App\Video', 'App\Post'], function ($query) {
$query->where('content', 'like', '%laravel%');
})->get();
上述代码中,whereHasMorph
方法用于筛选具有包含laravel
关键字的评论的帖子和视频。comments
是Post
模型中定义的多态关联方法。
总结:
whereHas
方法(多对多关系)或whereHasMorph
方法(多态关系)来实现。where
方法来添加具体的Where条件。腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云