Laravel ORM选择和之间

时间:2018-07-12 10:54:30

标签: laravel laravel-orm

我有下一个代码:

$properties = $properties
->selectRaw('*,'. $this->userCurrency->c_rate .' / c_rate  * p_fixed_price AS 
converted_p_fixed_price');

之后,我要按照这个价格排序。

 $properties = $properties->whereBetween('converted_p_fixed_price',
     [$request->low_price ,$request->hight_price]
 );

但是结果是我找不到列:1054 请帮助,如何以正确的方式在该字段之间?

1 个答案:

答案 0 :(得分:1)

如引述Here所示:可以在查询选择列表中使用别名来为列指定其他名称。您可以在GROUP BY,ORDER BY或HAVING子句中使用别名来引用列,Standard SQL禁止在WHERE子句中引用列别名。之所以施加此限制,是因为在评估WHERE子句时,可能尚未确定列值,因此必须使用having而不是whereBetween

代码的第二部分可以是这样的:

 $properties = $properties
        ->having('converted_p_fixed_price', '>=', $request->low_price)
        ->having('converted_p_fixed_price', '<=' ,$request->hight_price);

由于您不能在Laravel中对having子句使用分页,因此,如果要对结果进行分页,可以使用以下内容:

$properties = $properties
    ->whereRaw($this->userCurrency->c_rate . ' / c_rate  * p_fixed_price >= ' . $request->low_price)
    ->whereRaw($this->userCurrency->c_rate . ' / c_rate  * p_fixed_price <= ' . $request->hight_price)
    ->paginate($page_length);
相关问题