php - Laravel 雄辩的 whereHas() 无法使用 with() 急切加载
问题描述
我正在使用 Laravel 8.0,并且在“with”方法中使用“whereHas”方法。但是“whereHas”方法中的条件不起作用。
$data= static::where('capacity',">=",$adults + $children)->with(['booking_rooms'=>function($q) use($in,$out){
$q->whereHas('booking',function($qu){
return $qu->where('is_completed',1);
});
$q->where(function($qu) use($in,$out){
return $qu->where('check_in',"<=",$in)->where('check_out','>=',$out);
});
$q->orWhere(function($qu) use($in,$out){
return $qu->where('check_in',">=",$in)->where('check_out','<=',$out);
});
$q->orWhere(function($qu) use($in,$out){
return $qu->where('check_in',"<=",$in)->where('check_out',">=",$in)->where('check_out','<=',$out);
});
$q->orWhere(function($qu) use($in,$out){
return $qu->where('check_in',">=",$in)->where('check_in',"<=",$out)->where('check_out','>=',$out);
});
return $q;
}])->with(['room_holds'=>function($q) use($in,$out,$key){
$q->where(function($q) use($in,$out){
$q->where(function($qu) use($in,$out){
return $qu->where('check_in',"<=",$in)->where('check_out','>=',$out);
});
$q->orWhere(function($qu) use($in,$out){
return $qu->where('check_in',">=",$in)->where('check_out','<=',$out);
});
$q->orWhere(function($qu) use($in,$out){
return $qu->where('check_in',"<=",$in)->where('check_out',">=",$in)->where('check_out','<=',$out);
});
$q->orWhere(function($qu) use($in,$out){
return $qu->where('check_in',">=",$in)->where('check_in',"<=",$out)->where('check_out','>=',$out);
});
});
$q->where('till',">=",Carbon::now())->where("session_id","<>",$key);
return $q;
}])->get();
如何在“whereHas”方法中使条件生效?
解决方案
推荐阅读
- highcharts - 如何根据数据在标签上使用图像?
- c# - 如何在xamarin中设置固定列的宽度
- d3.js - TypeError:将传单 D3 v4 更新到 v5 时,points.filter 不是函数
- tensorflow - 如何并行运行张量流模型?我需要重新编程模型吗?
- c# - 在 C# 中使用 XML 将 Grid 2d 数组写入文件
- c# - 如何在 WPF 中围绕 UniformGrid 设置不同的边框粗细?
- scala - 在 EMR 集群上运行 Spark 作业时出现异常“java.io.IOException: All datanodes are bad”
- python-3.x - 嵌套元组的 else 语句问题
- flutter - Flutter - 命名参数未根据 pub.dartlang.org 定义,但该包有效
- sql - 外部连接中的意外 NULL