Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel Eloquent将所有返回的列值为0的行放在末尾,无论排序如何_Laravel_Eloquent_Laravel 5.5 - Fatal编程技术网

Laravel Eloquent将所有返回的列值为0的行放在末尾,无论排序如何

Laravel Eloquent将所有返回的列值为0的行放在末尾,无论排序如何,laravel,eloquent,laravel-5.5,Laravel,Eloquent,Laravel 5.5,我有一个生成器查询,根据输入的信息提取信息。主要的桌子是酒店和房价。用户可以按从高到低和从低到高的价格对结果进行排序。我需要把所有返回0的结果(一些价格日期范围中有以0作为价格的占位符)或结果末尾没有价格的酒店,不管怎样。我如何处理使它们都显示在末尾,而不考虑排序。下面是我现在所在的位置,但如果它不存在,它就不能处理问题,只有当它为0时,它也不能处理将结果放在最后的问题 还有一件事,我使用分页,否则我只会做一个foreach并重新排序 $builder->select('hotels.id

我有一个生成器查询,根据输入的信息提取信息。主要的桌子是酒店和房价。用户可以按从高到低和从低到高的价格对结果进行排序。我需要把所有返回0的结果(一些价格日期范围中有以0作为价格的占位符)或结果末尾没有价格的酒店,不管怎样。我如何处理使它们都显示在末尾,而不考虑排序。下面是我现在所在的位置,但如果它不存在,它就不能处理问题,只有当它为0时,它也不能处理将结果放在最后的问题

还有一件事,我使用分页,否则我只会做一个foreach并重新排序

$builder->select('hotels.id','hotels.main_image','hotels.sleeps','hotels.bathrooms','hotels.destination_id','hotels.hotel_name','hotels.slug','hotels.summary','hotels.sleeps','hotels.bedrooms',DB::raw('CASE WHEN max(rates.nightly_rate) = 0 THEN NULL ELSE max(rates.nightly_rate) END AS price_high'),DB::raw('CASE WHEN min(rates.nightly_rate) = 0 THEN NULL ELSE min(rates.nightly_rate) END AS price_low')
->leftJoin('rates', 'hotels.id', '=', 'rates.hotels_id');

如果
nightly_rate
0
null
时,可以强制执行按order by子句最后排序的记录

类似于
rates.nightly\u rates=0或rates.nightly\u rate为NULL的子句ASC
将确保在该条件为
FALSE
的记录之前,先对匹配的记录进行排序,然后再对其为
TRUE

$builder
->
//...
->orderByRaw('rates.nightly_rate=0或rates.nightly_rate为空ASC');

您是否尝试过
orderBy('column_name','asc')?这将在开始或结束时显示。我总是希望在结尾处显示空值。我尝试了这个方法,但没有成功。如果我只使用orderBy('price_low','desc')将所有空值分组在顶部,我可以使用asc将它们明显地放在底部,但最高值显示在顶部。不管其他排序值如何,我总是将NULL放在底部。哦,如果这是针对
price\u low
的,并且只有当它为NULL时,才将子句更改为
orderByRaw('price\u low为NULL ASC')
问题是price\u low是一个别名,因此它无法工作,我不断得到您所看到的错误SQLSTATE[42S22]:未找到列:不支持1247参考“价格低”(参考组功能)