2013-04-30 49 views
12

我有這個連接:在Laravel使用鮮明流利

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) 

但勿庸置疑返回重複的記錄,所以我嘗試使用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) 

,但我想在使用distinct()特定的單個字段,我可以輕鬆地在SQL中執行此操作。看起來distinct()不接受參數,即我不能說distinct('volunteer.id')

任何人都可以指出我如何刪除我的重複記錄?我敢打賭,這是我的另一個前額拍板。

+0

當然,我在這裏完全是愚蠢的,需要添加' - > group_by('volunteer.id')'以及' - > distinct()'。 – 2013-04-30 18:07:24

+0

但包括' - > group_by('volunteer.id')'讓我的分頁鏈接消失!! ??? – 2013-04-30 18:20:05

+0

我相信Laravel 3有一段時間出現了分頁和group_by的錯誤;我不知道它是否在Laravel 4中得到解決。 – 2013-05-01 08:16:00

回答

26

在我的項目我試着distinct()groupby()也和他們兩個的工作:

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

據此,distinct()應該工作你的情況也一樣,只是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')); 

否則,當您使用groupby()時,您不需要distinct(),因此您可以使用:

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