@petr_reznikov

Как объединить данные из двух таблиц в одну YII?

Имеется 2 таблицы org_special_price и incident Таблица org_special_price
626a7f928b894281383066.png
В таблице incident есть поле client_org_id Я пытаюсь найти соответствия по org_id и client_org_id и если такое есть - добавить все столбцы из org_special_price

для этого я использую leftJoin

$incidents = Incident::find()
            ->leftJoin('org_special_price', 'org_special_price.org_id = incident.client_org_id')
            ->where(['incident.partner_org_id' => $org_id])
            ->all();


но затем - пытаюсь вывести для проверки во view через print_r($incidents) я нужных столбцов не вижу Подскажите, пожалуйста, где моя ошибка?
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@bgmir607605
Можно перед вызовом ->all() добавить ->asArray()
https://www.yiiframework.com/doc/api/2.0/yii-db-ac...
И select() с нужными параметрами указать
https://www.yiiframework.com/doc/guide/2.0/en/db-a...
https://www.yiiframework.com/doc/api/2.0/yii-db-qu...

В таком случае получите все необходимые столбцы, НО!
Результат будет в виде массивов, а не моделей.
Если дальше необходимо работать именно как с моделью, то можно создать динамическую модель.
https://www.yiiframework.com/doc/api/2.0/yii-base-...

Всё-таки сначала нужно задуматься о целесообразности такого использования и перепроектировании классов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vilinyh
@vilinyh
Incident::find() ищет и вытаскивает модели Incident. А модель Incident не содержит в себе атрибуты из таблицы "org_special_price". leftJoin в данном случае не влияет почти ни на что.

Обычно для извлечения данных связанных таблиц используются relations:
https://www.yiiframework.com/doc/guide/2.0/en/db-a...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы