Страница 1 из 1
Записи без связянных объектов
Добавлено: 2013.07.17, 05:18
Grigory
Здравствуйте!
Есть модель
Код: Выделить всё
class Rooms extends CActiveRecord{
...
public function relations(){
return array(
'ptrans'=>array(self::HAS_MANY, 'Periods', 'fk_room',
'condition'=>'
ptrans.arrive<:mbegin &&
ptrans.depart>:mend
'
)
);
}
}
Как запросить все записи Rooms имеющие и не имеющие связанные объекты?
Re: Записи без связянных объектов
Добавлено: 2013.07.17, 05:50
lancecoder
Код: Выделить всё
array(
'condition' => 'ptrans.fk_room IS NULL'
//'condition' => 'ptrans.fk_room IS NOT NULL'
)
Re: Записи без связянных объектов
Добавлено: 2013.07.17, 06:34
Grigory
Спасибо.
Re: Записи без связянных объектов
Добавлено: 2013.07.17, 07:25
Grigory
Только сейчас заметил, что не помогло. Когда задаю связь
Код: Выделить всё
public function relations(){
return array(
'ptrans'=>array(self::HAS_MANY, 'Periods', 'fk_room',
'condition'=>'(ptrans.arrive<:mbegin &&
ptrans.depart>:mend) ||
ISNULL(ptrans.fk_room)
'
),
То в Rooms включаются только те записи которые имеют пустым поле fk_room в связанной таблице.
Если задаю связь так:
Код: Выделить всё
public function relations(){
return array(
'periods'=>array(self::HAS_MANY, 'Periods', 'fk_room'),
'ptrans'=>array(self::HAS_MANY, 'Periods', 'fk_room',
'condition'=>'
(ptrans.arrive<:mbegin &&
ptrans.depart>:mend) ||
ISNULL(ptrans.fk_room) ||
!ISNULL(ptrans.fk_room)
'
),
}
То в Rooms включаются все записи и даже те, которые не удовлетворяют условию (ptrans.arrive<:mbegin && ptrans.depart>:mend).
Re: Записи без связянных объектов
Добавлено: 2013.07.17, 10:33
Grigory
Реши проблему так
Код: Выделить всё
...
public function relations(){
return array(
'ptrans'=>array(self::HAS_MANY, 'Periods', 'fk_room',
'on'=>'
ptrans.arrive<:mbegin &&
ptrans.depart>:mend
'
)
}
Связанные объекты отсеялись по условию, а записи без связанных объектов остались с пустыми массивами.