我是 laravel 的新手,面临雄辩的搜索查询问题。我有两个表assets
和assets_maintenance
. 当用户搜索时,它们与它们有关系,即资产模型中的assets
hasMany属于资产维护模型中的资产,然后我输入以下代码来获取结果。assets_maintenance
assets
assets_maintenance
$data['reports'] = AssetMaintenance::with(['assets'])
->where('inspector_id',$tenant_inspector_id)
->where('maintenance_due_date','>=',Carbon::now()->startOfDay())
->whereHas('assets',function($query){
$query->active();//is_delete=0
})
->whereHas('assets',function($query) use($stext){
$query->where('asset_reference','like',"%{$stext}%")
->orWhere('asset_detail','like',"%{$stext}%");
})
->orWhereHas('assets.assetCategory',function($query) use($stext){
$query->where('assets_category.name','like',"%{$stext}%");
})
->orWhere('maintenance_due_date','like',"%{$stext}%")
->orWhere('maintenance_cost','like',"%{$stext}%")
->orderBy('maintenance_due_date','ASC')
// ->toSql();
->paginate(10);
但它没有给我正确的结果。有时它给了我另一个资产或检查员的记录。我想要结果,从哪里inspector_id=?
,manitenance_due_date
大于now
并且assets
是活动的意味着不被删除。
其他条件可选asset_reference
, asset_detail
, assets_category.name
, maintenance_due_date
,maintenance_cost