13

我有这个加入:

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

谁能指出我如何删除我的重复记录?我敢打赌,这对我来说是另一个额头拍打器。

4

1 回答 1

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

distinct()否则你在使用时不需要,groupby()所以你可以使用:

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'));
于 2013-08-12T11:32:27.067 回答