游击队按关系分为三个表



我有这些关系

用户有许多产品

产品有许多文件

我想要的产品:用户表中的状态字段为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);
}

相关内容

  • 没有找到相关文章

最新更新