many_many left join

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
AlTiger
Сообщения: 199
Зарегистрирован: 2012.01.15, 18:37

many_many left join

Сообщение AlTiger »

В итоге нужно получить подобный запрос

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

SELECT * FROM "indications" LEFT JOIN "meds_indications"  ON ("indications"."id"="meds_indications"."indication_id") WHERE ("meds_indications"."med_id"=1) OR "indications"."is_internal" = true
Суть, в таблице indications есть две записи(is_internal = true) которые всегда! связанны с каждой! моделью + возможность связывать оставшиеся записи.

Нужно в итоге получить и две дефолтные записи, и список связанных данных.

Почему решено жестко не создавать зависимости без возможности удаления? Не захотелось по ряду причин, которые актуальны в дальнейшей разработке.
AlTiger
Сообщения: 199
Зарегистрирован: 2012.01.15, 18:37

Re: many_many left join

Сообщение AlTiger »

Решил так

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

    public function relations()
    {
        return array(
            'rel'          => array(self::HAS_MANY, 'MedsIndication', 'med_id'),
            'indications'  => array(
                self::HAS_MANY, 'Indication', array('indication_id' => 'id'), 'through' => 'rel',
                'join'      => ' OR ("indications"."is_internal"=true)'
            )
        );
    } 
Ответить