11
//Earlier in the code, in each Model:
query = ModelName::select('table_name.*')

//Later in the code in a function in a Trait class that is always called

    if ($column == 'group_by')
    {
        $thing_query->groupBy($value);
        $thing_query->select(DB::raw('COUNT('.$value.') as count'));
    }

有没有办法在 eloquent 查询构建器中附加或包含单独的选择函数?

实际的 ->select() 设置较早,然后调用此函数。我想在稍后将查询传递给它的函数中有条件地添加计数列。

4

3 回答 3

16

为了将来参考,您可以使用addSelect()函数。

在文档中会很好,但您会在 API 中找到它:http: //laravel.com/api/4.2/Illuminate/Database/Query/Builder.html#method_addSelect

于 2014-02-10T05:26:33.793 回答
0

是的,您只需插入要作为函数执行的块....根据Parameter Grouping上的文档,您可以这样做...通过传递 Where 函数...

下面的这段代码可能不会做你想做的事,但是,它是你可以构建和玩弄的东西。

DB::table('users')
        ->where('name', '=', 'John')
        ->orWhere(function($query)
        {
            $query->group_by($value);
                  ->select(DB::raw('COUNT('.$value.') as count'));
        })
        ->get();
于 2013-06-24T21:00:37.707 回答
-1

尝试这个:

$thing_query->groupBy($value)->get(DB::raw('COUNT('.$value.') as count'));

此外,如果您只是想获得计数而不选择多个可以使用的东西,->count()而不是->get()

于 2013-06-24T21:00:25.690 回答