Получите результаты подсчета в Left Join в Laravel - PullRequest
1 голос
/ 24 июня 2019

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

'tab_areas_atuacoes'

это специальность специалиста, и у меня есть таблица

'tab_medicos_as_area_atuacao'

, которая представляет собой таблицу всех специализаций каждого профессионала, где каждый профессионал может иметь большечем одна специальность.

Я хочу получить данные от 'tab_areas_atuacoes', и я хочу получить количество специальностей, которые есть у каждого специалиста, но я не получаю результаты.Может ли кто-нибудь дать мне идею?Пока у меня так:

DB::table('tab_areas_atuacoes')                         
   ->whereNull('deleted_at')
   ->leftJoin('tab_medicos_as_areas_de_atuacao', function($query){
        $query->on('tab_medicos_as_areas_de_atuacao.rel_area_atuacao_id', 'tab_areas_atuacoes.esp_id');
        $query->selectRaw('tab_medicos_as_areas_de_atuacao.*, count(tab_medicos_as_areas_de_atuacao.rel_area_atuacao_id) as total');                                                                                 
   })->select('esp_id', 'esp_data', 'esp_titulo', 'esp_status', 'deleted_at')->groupBy('tab_areas_atuacoes.esp_id');    

Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 24 июня 2019

Боюсь, я на самом деле не понимаю структуру, поэтому здесь было немного догадок. У вас был выбор в вашем объединении, я не уверен, пытались ли вы добавить все эти столбцы в набор результатов или нет. Вы можете добавить все необходимые столбцы к первоначальному выбору или добавить другие позже с помощью вызова addSelect().

DB::table('tab_areas_atuacoes')
  ->select(
    'esp_id',
    'esp_data',
    'esp_titulo',
    'esp_status',
    'deleted_at',
    DB::raw(
      'COUNT(tab_medicos_as_areas_de_atuacao.rel_area_atuacao_id) AS total'
    )
  )->leftJoin(
    'tab_medicos_as_areas_de_atuacao',
    'tab_medicos_as_areas_de_atuacao.rel_area_atuacao_id',
    '=',
    'tab_areas_atuacoes.esp_id'
  )->whereNull('deleted_at')
  ->groupBy('tab_areas_atuacoes.esp_id'));         
...