我正在使用一个在" HAVING"中使用别名的功能。条款和我收到错误,
"未知栏' orderStatusWithoutOpen'在'有条款'" 。
这是我的代码:
public static function getEquipmentPaginated($conditions = false, $id = false,$orderby='equipment_no',$order='asc',$filter=false)
{
$equipment = Equipment::select('checklist.*');
$equipment->leftjoin('checklist','equipment_id','=','equipment.id');
$equipment->addSelect('equipment.*', DB::Raw("(SELECT count(ordre.status = 001) FROM ordre LEFT JOIN checklist ON checklist.ordre_id=ordre.id WHERE checklist.equipment_id=equipment.id and ordre.status = 001 order by ordre.start_date desc limit 1) AS orderStatusWithoutOpen"));
$equipment->groupBy('equipment.id');
$start = date('Y-m-d');
$end = date('Y-m-d', strtotime('+15days'));
if($filter == '1' && $filter != "") {
$equipment->having('orderStatusWithoutOpen', "<", $filter);
}
if($filter == $start) {
$equipment->whereBetween('certificate.valid_date', [$start, $end]);
}
if($id) {
$equipment->where('equipment.customer_id', '=', $id);
}
return $equipment->paginate(10);
}
任何人都可以告诉我,我在这里犯了什么错误。
提前致谢。
答案 0 :(得分:1)
其实我自己纠正了这个问题。查询工作正常,问题在于分页。所以我做的是,我在if条件下返回结果,我使用&#39; HAVING&#39;条款。如下所述:
if($filter == '1' && $filter != "")
{
$equipment->having('orderStatusWithoutOpen', "<", $filter);
return $equipment->get();
}
答案 1 :(得分:0)
您必须在选择查询中输入要对其进行排序的值。
例如,如果 equipment_fabricat.fabricat_name 那么 在通过
申请订单之前,在选择(equipment_fabricat.fabricat_name)中获取该值