2013-06-24 29 views
6
//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')); 
    } 

Có cách nào để thêm hoặc bao gồm chức năng chọn riêng trong trình tạo truy vấn hùng hồn không?Laravel Fluent thêm select() s vào những nơi riêng biệt?

Thực tế -> select() được đặt trước đó và sau đó chức năng này được gọi. Tôi muốn thêm cột đếm có điều kiện trong hàm sau này có truy vấn được chuyển vào nó.

Trả lời

-1

Hãy thử điều này:

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

Ngoài ra, nếu bạn đang cố gắng để có được số lượng và không chọn nhiều điều bạn có thể sử dụng ->count() thay vì ->get()

+0

Điều đó không có thêm tính để truy vấn chọn khác của tôi, chỉ cần trả nó bằng cách riêng của mình – Damon

0

Vâng bạn chỉ cần chèn khối bạn muốn thực hiện như một chức năng .... theo các tài liệu trên Parameter Grouping, bạn có thể làm như vậy ... bằng cách đi qua các chức năng ...

Mã dưới đây pro bably wont làm những gì bạn muốn, nhưng, một cái gì đó của nó cho bạn để xây dựng tắt, và chơi xung quanh với.

DB::table('users') 
     ->where('name', '=', 'John') 
     ->orWhere(function($query) 
     { 
      $query->group_by($value); 
        ->select(DB::raw('COUNT('.$value.') as count')); 
     }) 
     ->get(); 
12

Để tham khảo trong tương lai, bạn có thể sử dụng chức năng addSelect().

Nó sẽ là tốt để có trong tài liệu, nhưng bạn sẽ tìm thấy nó ở đây trong API: http://laravel.com/api/4.2/Illuminate/Database/Query/Builder.html#method_addSelect

+0

liên kết đó không hoạt động đối với tôi, điều này thực hiện: http://laravel.com/api/4.2/Illuminate/Database/Query/Builder.html#method_addSelect – Benubird

+0

Cảm ơn, đã cập nhật – Cameron

Các vấn đề liên quan