尝试查询具有较低级别关系(协议)的模型,我无法进行链接工作。我尝试了下面的三种方法(第二种方法让我99%的方式,但它错过了其中一个结果 - 一个不活跃的设备"状态"和一个"无效"协议(应该省略)。我做错了什么?
每件设备都必须是“活跃的”#34;并且有一个积极的现有协议(一个有效的协议是"活跃","到期时取消"或"未签名")。
$thing = Equipment::wherehas('agreement', function($q)use($month)
{
$q->where('equipment.status', '=', 'Active')
->where('maintenance_months', 'like', '%'.$month.'%')
->where('status', '=', 'Active')
->orWhere('status', '=', 'Unsigned')
->orWhere('status', '=', 'Cancel on expiry');
})->Get();
$thing = Equipment::wherehas('agreement', function($q)use($month)
{
$q->where('status', '=', 'Active')
->orWhere(function($q2)use($month)
{
$q2->where('equipment.status', '=', 'Active')
->where('maintenance_months', 'like', '%'.$month.'%');
})
->where('status', '=', 'Unsigned')
->orWhere(function($q3)use($month)
{
$q3->where('equipment.status', '=', 'Active')
->where('maintenance_months', 'like', '%'.$month.'%');
})
->where('status', '=', 'Cancel on expiry')
->orWhere(function($q4)use($month)
{
$q4->where('equipment.status', '=', 'Active')
->where('maintenance_months', 'like', '%'.$month.'%');
});
})->Get();
$thing = Equipment::wherehas('agreement', function($q)use($month)
{
$q->where('status', '=', 'Active')
->where('equipment.status', '=', 'Active')
->where('maintenance_months', 'like', '%'.$month.'%')
->orWhere('status', '=', 'Unsigned')
->where('equipment.status', '=', 'Active')
->where('maintenance_months', 'like', '%'.$month.'%')
->orWhere('status', '=', 'Cancel on expiry')
->where('equipment.status', '=', 'Active')
->where('maintenance_months', 'like', '%'.$month.'%');
})->get();
答案 0 :(得分:3)
我不太明白为什么equipment.status一遍又一遍地过滤同一个东西,如果我不理解,下面的代码可能就是你要找的结果。
$thing = Equipment::whereHas('agreement', function($q)use($month)
{
$q->where('maintenance_months', 'like', '%'.$month.'%')
->whereIn('status',['Unsigned','Active','Cancel on Expiry'])
})->where('status','Active')->get();