问题描述
我有各种具有这些关系的表,称为模型
客户
class Customers extends Model
{
public function claims()
{
return $this->hasMany(Claims::class);
}
}
索赔
class Claims extends Model
{
public function refunds()
{
return $this->hasMany(refunds::class);
}
public function customers()
{
return $this->belongsTo(Customers::class,'customers_id');
}
}
退款
class refunds extends Model
{
public function services()
{
return $this->belongsToMany(Services::class)
->withPivot(['services_id','services_amount','services_status']);
}
public function claims()
{
return $this->belongsTo(Claims::class,'claims_id');
}
}
服务
class Services extends Model
{
public function refunds()
{
return $this->belongsToMany(refunds::class);
}
}
我需要执行一个查询,以返回来自客户的所有行,并在数据透视表上的行数为returns_services,其中每个客户行的services_id = 1。
我该怎么做?可能吗?或更好,我使用带有多个联接的查询生成器和sql
Thx
解决方法
您可以尝试:
Customers::select('cliente')
->addSelect([
'countRefundService' => Customers::withCount('claims.refunds.services',function($query) {
$query->where('id',1);
})->get();
])
->whereHas('claims.refunds.services',function ($query) {
$query->where('id',1);
} )
->get();