我有这些关系
用户有许多产品
产品有许多文件
我想要的产品:用户表中的状态字段为1文件表状态字段为1
如果您喜欢,可以使用whereHas方法
首先在Product
模型中设置如下关系:
public function user(){
$this->belongsTo(User::class);
}
public function files(){
$this->hasMany(File::class);
}
然后,您可以使用whereHas
装载您的查询,如下所示:
$products = Product::whereHas('user', function (Builder $query) {
$query->where('status', 1);
})->whereHas('files', function (Builder $query) {
$query->where('status', 1);
})->get();
最后,如果您使用的是php>=7.4你可以使用箭头功能来完成这个技巧,这会让它更干净:
$products =
Product::whereHas('user', fn (Builder $query) => $query->where('status', 1))
->whereHas('files', fn (Builder $query) => $query->where('status', 1))->get();
如果您已经在雄辩模型中定义了关系,那么这就是您需要的查询:
$products = Product::whereRelation('user', 'status', '1')->
whereRelation('files', 'status', '1')->get();
关系
Product
型
public function user(){
$this->belongsTo(User::class);
}
public function files(){
$this->hasMany(File::class);
}