我会按 orderBy 对选定的列进行分组,而没有来自 cars.name 的最后 3 个字符。
$objects_collection = $objects_collection
->groupBy("cars.name", "parts.part_catalog_id", "parts.colour_id")
->select($this->getProperTableName(str_plural($this->getRoute())) . ".*", DB::raw("count(*) as quantity"))
->paginate($paginate);
我应该怎么做?
编辑:
解决方案是:
$objects_collection = $objects_collection
->groupBy(DB::raw("SUBSTRING_INDEX(cars.name, '/', 1)"), "parts.part_catalog_id", "parts.colour_id")
->select($this->getProperTableName(str_plural($this->getRoute())) . ".*", DB::raw("count(*) as quantity"))
->paginate($paginate);
最佳答案
如果您使用的是 MySQL,您可以尝试一下:
$objects_collection = $objects_collection
->groupBy("cars.name", "parts.part_catalog_id", "parts.colour_id")
->select(DB::raw('SUBSTR(`cars.name`, 1, (LENGTH(`cars.name`)-3))'), $this->getProperTableName(str_plural($this->getRoute())) . ".*", DB::raw("count(*) as quantity"))
->orderByRaw('1')'
->paginate($paginate);
正如您所说,您想要orderBy
。
关于mysql - laravel,groupby()中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37600488/