laravel 5.1中的having子句中的别名

时间:2016-11-15 07:12:45

标签: laravel-5

我正在使用一个在" 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);
}

任何人都可以告诉我,我在这里犯了什么错误。

提前致谢。

2 个答案:

答案 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)中获取该值