Maksclub
@Maksclub
maksfedorov.ru

Почему может быть ошибка в fields связанных моделей Yii2?

Дано: 2 модели (Здание и Фирма), связь один к одному (у одной фирмы может быть 1 здание)

В моделе Фирма данные о здании выводятся успешно
код модели Фирма

public function fields()
    {
        return [
            ...
            'building',
        ];
    }

    public function getBuilding()
    {
        return $this->hasOne(Building::className(), ['id' => 'building_id']);
    }

А вот если я хочу выводить у здания все фирмы, которые у него есть, то валится ошибка сервера
код модели Здание

public function fields()
    {
        return [
            ...
            'firms',
        ];
    }

    public function getFirms()
    {
        return $this->hasMany(Firm::className(), ['building_id' => 'id']);
    }
  • Вопрос задан
  • 307 просмотров
Решения вопроса 2
@davidnum95
Попробуйте так:
public function fields()
    {
        return [
            ...
            'firms' => function () {
                return $this->firms;
            },
        ];
    }
Ответ написан
Комментировать
proudmore
@proudmore
Привет. У тебя вообще реляция нормально работает? Что ты получаешь из $model->firms?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vkdv
ну по логике вы для одной записи пытаетесь выбрать множество записей из другой таблицы. Я не помню точно как на это реагирует yii2, но в Ларавел такая фишка не прокатит(Left join возвращает столько левых записей, сколько и правых, с ОРМ в этом могут быть проблемы ).
Вам придется принудительно вызывать после $Build = Build::findOne(5)(или как там); $BuildFirms = $Build->firms;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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