получить другой (пользовательский) столбец с группировкой и считать с помощью laravel - PullRequest
0 голосов
/ 11 января 2019

Я хочу получить вакансии из таблицы вакансий.

вакансии стол

id | позиция

1 | Laravel dev

2 | Php dev

3 | Laravel dev

4 | Laravel dev

5 | Laravel dev

Я хочу получить вакансии, используя оператор where, но результат должен быть с count.

enter image description here

Как вы можете видеть на скриншоте выше ... Я получаю только столбец Position и Count для этого я использую следующий запрос-

$vacancies = Vacancy::where('tag_category_id', $TagCatId)
            ->select('position', DB::raw('count(*) as total'))
            ->groupBy('position')
            ->get();

Что если в этом результате я тоже хочу столбец идентификаторов?

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Попробуйте использовать GROUP_CONCAT:

$vacancies = Vacancy::where('tag_category_id', $TagCatId)
            ->select(DB::raw('GROUP_CONCAT(id) AS IDs','position', DB::raw('count(*) as total'))
            ->groupBy('position')
            ->get();

Это даст вам разделенный запятыми список идентификаторов для каждой позиции

Я запустил это в своей таблице пользователей, поэтому игнорируйте имена столбцов, но вы получите результат в следующем формате:

Мой запрос:

Users::select(DB::raw('GROUP_CONCAT(id) AS IDs'), DB::raw('count(*) as Total'), 'team_id')
->groupBy('team_id')
->get();

Мой вывод:

App\Users {#3297
         IDs: "9,69,70,72,73",
         Total: 5,
         team_id: 11,
       },
0 голосов
/ 11 января 2019

Вам необходимо сначала установить strict ключ как false in database.php в mysql подключении

 'strict' => false,   //change true to false ..

затем запустите эту команду clear config

php artisan config:cache

затем выполните этот запрос

Vacancy::where('tag_category_id', $TagCatId)
            ->select('id','position', DB::raw('count(*) as total'))
            ->groupBy('position')
            ->get();

Подробнее о строгом режиме см.

если вы хотите настроить в режиме, вы можете сделать это см.

Отключение не сделает ваш сайт незащищенным, если вы обработаете все проверки в ваших контроллерах и следуйте лучшим практикам, таким как Laravel уже делает из коробки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...