Laravel ORM select and whereBetween



我有下一个代码:

$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);

相关内容

  • 没有找到相关文章

最新更新