我有下一个代码:
$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请帮忙,怎样才能在那片田野之间找到正确的路?
如前所述:可以在查询选择列表中使用别名为列指定不同的名称。可以在GROUP BY、ORDER BY或HAVING子句中使用别名来引用列,标准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);