对数据透视表中具有关系和条件的表进行口才查询

问题描述

我有各种具有这些关系的表,称为模型

客户

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();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...