Динамический HAS_ONE relation

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
mitaichik
Сообщения: 512
Зарегистрирован: 2010.09.24, 21:18
Откуда: Россия, Санкт-Петербург

Динамический HAS_ONE relation

Сообщение mitaichik »

Всем доброго дня )

Есть модель, допустим товара. И есть много таблиц - типов товаров (у каждого типа свои параметры и соответсвенно, своя таблица). У товара есть релейшн HAS_ONE, но таблица, из которой должен выбирать этот HAS_ONE зависит от типа товара ( поле таблицы товара). В общем, как-то так:

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

class Tovar extends CActiveRecord{

    public function relations(){
        return array(
            'properties' => array(self::HAS_ONE, 'Tovar'.ucfirst($this->type), 'tovar_id'),    
        );
    }
}
 


где $this->type определяет тип товара.

Вопрос: как одним запросом выбрать товары вместе с таким relation?
Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: Динамический HAS_ONE relation

Сообщение Caveman »

Таким способом - никак.
Метод relations является методом прототипа модели, но не конкретного экземпляра.
Учитывая, что свойства получаем для конкретного товара (а иначе и не получится, если ищем по айдишнику), то можно попробовать в afterFind добавить динамически связь.
Аватара пользователя
mitaichik
Сообщения: 512
Зарегистрирован: 2010.09.24, 21:18
Откуда: Россия, Санкт-Петербург

Re: Динамический HAS_ONE relation

Сообщение mitaichik »

Caveman писал(а):Таким способом - никак.
Метод relations является методом прототипа модели, но не конкретного экземпляра.
Учитывая, что свойства получаем для конкретного товара (а иначе и не получится, если ищем по айдишнику), то можно попробовать в afterFind добавить динамически связь.
Покапался в исходниках - похоже ты прав.

А в SQL можно указать функцию в качестве имени таблицы пр JOIN'e ?
Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: Динамический HAS_ONE relation

Сообщение Caveman »

Смотря где запрос выполняться будет. Но в принципе можно.
Ответить