hasOne via Table

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

hasOne via Table

Сообщение an.viktory@gmail.com »

Код: Выделить всё

public function getManufacturer() {
        return $this->hasOne(OcManufacturer::className(), ['manufacturer_id' => 'brand_id'])
            ->viaTable(BrandsToManufacturer::tableName, ['manufacturer_id' => 'brand_id');
    }
в таблице BrandsToManufacturer всего два поля

Код: Выделить всё

 manufacturer_id, brand_id
2                 33    0
пытаюсь сделать простой запрос (т.е. вывести название Производителя у бренда и и ничего получаю хотя все записи в таблице имеются )

Код: Выделить всё

 $brand = Brands::findOne(2);
 echo $brand->manufacturer->name;
что не так сделал в построении связи ?
Последний раз редактировалось an.viktory@gmail.com 2018.08.15, 08:16, всего редактировалось 1 раз.
masson
Сообщения: 545
Зарегистрирован: 2012.07.03, 15:59

Re: hasOne via Table

Сообщение masson »

В таблицах Manufacturer & Brand поля с первичными ключами как называются? Если id - то

Код: Выделить всё

public function getManufacturer() {
        return $this->hasOne(OcManufacturer::className(), ['id' => 'manufacturer_id'])
            ->viaTable(BrandsToManufacturer::tableName, ['brand_id' => 'id');
    }
А вообще, если hasOne, то смысл промежуточной таблицы не совсем понятен. Достаточно в таблице Brand создать поле manufacturer_id
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: hasOne via Table

Сообщение an.viktory@gmail.com »

спасибо помогло))) никак не мог допедрить с этими id ) зачем в эту hasOne потому, что потом в таблицу я добавлю поле user_id что даст возможность каждому user_id делать свою связь)
Ответить