2013-04-30 29 views
12

Tôi có này tham gia:Sử dụng biệt trong Laravel thạo

Return DB::table('volunteer') 
      ->join('volunteer_volunteer_category', 'volunteer_volunteer_category.volunteer_id', '=', 'volunteer.id') 
      ->select(array('*','volunteer.id AS link_id')) 
      ->where('is_published', '=', 1) 

Nhưng nó không ngạc nhiên trả hồ sơ trùng lặp, vì vậy tôi cố gắng sử dụng distinct():

Return DB::table('volunteer') 
      ->join('volunteer_volunteer_category', 'volunteer_volunteer_category.volunteer_id', '=', 'volunteer.id') 
      ->select(array('*','volunteer.id AS link_id')) 
         ->distinct() 
      ->where('is_published', '=', 1) 

nhưng tôi muốn sử dụng distinct()trên trường đơn cụ thể mà tôi có thể dễ dàng thực hiện trong SQL. Có vẻ như distinct() không tham số, tức là tôi không thể nói distinct('volunteer.id').

Có ai có thể chỉ cho tôi cách tôi có thể xóa bản ghi trùng lặp của mình không? Tôi đặt cược đây là một cái trán trán khác cho tôi.

+0

Tất nhiên tôi hoàn toàn ngu ngốc ở đây và cần thêm '-> group_by ('volunteer.id')' cũng như '-> distinct()'. –

+0

Nhưng bao gồm '-> group_by ('volunteer.id')' làm cho các liên kết phân trang của tôi biến mất !! ??? –

+0

Tôi tin rằng có một lỗi với pagination và group_by trong một thời gian bây giờ trong Laravel 3; Tôi không biết liệu nó có được giải quyết trong Laravel 4 hay không. –

Trả lời

26

Trong dự án của tôi, tôi đã cố gắng distinct()groupby() quá và cả trong số họ làm việc:

//Distinct version. 
Company_Customer_Product::where('Company_id', '=', $companyid)->distinct()->get(array('Customer_id')); 
//Goup by version. 
Company_Customer_Product::where('Company_id', '=', $companyid)->groupby('Customer_id')->get(array('Customer_id')); 

Theo đó, distinct() nên làm việc trong trường hợp của bạn cũng vậy, chỉ cần sử dụng nó với get():

Return DB::table('volunteer') 
    ->join('volunteer_volunteer_category', 'volunteer_volunteer_category.volunteer_id', '=', 'volunteer.id') 
    ->select(array('*','volunteer.id AS link_id')) 
    ->distinct() 
    ->where('is_published', '=', 1) 
    ->get(array('volunteer.id')); 

Nếu không, bạn không cần distinct() khi bạn sử dụng groupby() để bạn chỉ có thể sử dụng:

Return DB::table('volunteer') 
    ->join('volunteer_volunteer_category', 'volunteer_volunteer_category.volunteer_id', '=', 'volunteer.id') 
    ->select(array('*','volunteer.id AS link_id')) 
    ->group_by('volunteer.id') 
    ->where('is_published', '=', 1) 
    ->get(array('volunteer.id')); 
Các vấn đề liên quan