【问题标题】:laravel, substring in groupby()laravel,groupby() 中的子字符串
【发布时间】:2016-10-02 16:48:17
【问题描述】:

我将按 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 laravel laravel-5 eloquent


【解决方案1】:

如果你使用 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

【讨论】:

    【解决方案2】:

    你有没有尝试过(没有测试过)

    $objects_collection = $objects_collection
            ->groupBy(substr($objects_collection->cars.name, 0, -3), "parts.part_catalog_id", "parts.colour_id")
            ->select($this->getProperTableName(str_plural($this->getRoute())) . ".*", DB::raw("count(*) as quantity"))
            ->paginate($paginate);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多