YiiFramework Как вывести такой результат в GridView::widget ?

Вакансии в Москве: Ведуший PHP разработчик 110-150к

Тема в разделе "Yii Framework", создана пользователем Stan, 14 дек 2016.

  1. Stan

    Stan Новичок

    Сообщения:
    1
    Adress:
    Country:
    Location on map:
    Здравствуйте. Прошу дать совет начинающему, долго бьюсь с проблемой но так и не понял как ее решить.

    Есть 3 таблицы:
    - список пользователей employees
    - список должностей employee_positions (внешний ключ id_user к id таблицы employees и внешний ключ id_department к id таблицы departments) - каждый пользователь имеет несколько должностей из разных подразделений
    - список подразделений

    Запрос к базе делаю так:

    PHP:
    $dataProvider = new SqlDataProvider([
      
    'sql' => '
    SELECT * FROM `employees` e
    LEFT JOIN `employee_positions` p ON e.id=p.id_user
    LEFT JOIN `departments` d ON d.id=p.id_department
    ORDER BY e.fio ASC
    '
    ,
     
    'totalCount' => $count,
    ]);
    Во вьюхе вывожу результаты, получается, что каждый пользователь дублируется - сколько у него должностей столько и строк. А мне надо, чтобы каждый пользователь был единожды, но в правом столбце перечислялись все его должности и к какому подразделению эта должность относится. Возможно ли такое с помощью GridView::widget?

    Пытался выводить самописную таблицу, но не понял как получить результаты из провайдера $dataProvider?
    var_dump($dataProvider) не содержит самих данных.

    Благодарю за ответы.
     
  2. fixxxer

    fixxxer К.О.

    Сообщения:
    11.630
    Ваш город:
    Moscow, Russia
    Adress:
    Moscow, Russia
    Country:
    Location on map:
    Я не знаю и не хочу ничего знать про yii с его виджетами, но в mysql ты можешь получить искомое, используя group by и group_concat.
     
  3. grigori

    grigori Moderator Команда форума

    Сообщения:
    6.363
    Ваш город:
    Stormwind
    "не читал, но осуждаю" (С) )))
     
    Апокалипсис нравится это.