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'));
    }

雄弁なクエリビルダーに別の選択関数を追加または含める方法はありますか?

実際の ->select() が先に設定されてから、この関数が呼び出されます。クエリが渡されたこの後の関数に、条件付きで count 列を追加したいと思います。

4

3 に答える 3

0

ええ、関数として実行したいブロックを挿入するだけです....パラメータグループ化に関するドキュメントによると、そのようにすることができます...Where a functionを渡すことで...

以下のこのコードは、おそらくあなたが望むことをしないでしょうが、それを基に構築し、いじってみることができます。

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 に答える