在Laravel的雄辩查询中指定一个select子句

时间:2013-12-18 01:30:58

标签: php mysql laravel eloquent

category                 category_path
---------------          ----------------
id                       category_id
title                    path_id
                         level

查询

    CategoryPath::with('Category')
        ->select('*', DB::Raw('group_concat(title ORDER BY level SEPARATOR " > ") as name'))
        ->groupBy('category_path.category_id')->paginate(10);

我在Unknown column 'title'中收到错误group_concat

如何从相关表格中进行选择?

简单解决方案:

使用模型类而不是DB类,然后查询将保持雄辩的关系:

$categories = CategoryPath::select('*', DB::Raw('group_concat(title ORDER BY level SEPARATOR " > ") as name'))
    ->leftJoin('category', 'category_path.path_id', '=', 'category.id')
    ->groupBy('category_path.category_id')
    ->orderBy('name', 'ASC')
    ->paginate(10);

1 个答案:

答案 0 :(得分:2)

您可以使用lists()方法。

$categoryPath = CategoryPath::with('category')->paginate(10);

foreach($categoryPath as $path) {
    echo implode(' > ', $path->category->lists('title'));
}

虽然我做了一些假设,但这应该会产生预期的效果。