Подтвердить что ты не робот

Использование Distinct в Laravel Fluent

У меня есть это соединение:

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

Может ли кто-нибудь указать мне, как я могу удалить свои дубликаты записей? Держу пари, это для меня другой лбу.

4b9b3361

Ответ 1

В моем проекте я пробовал 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'));