В модели Event есть общее событие, которое должно быть включено в каждый Листинг. Идентификационный листинг этого события - «0». Так что если в листинге нет события. Это покажет это общее событие. Также, если у него есть событие (я) ... Также будет включен и общий.
Я пробовал использовать условия с использованием составного массива ИЛИ, однако он не изменит правильное И на ИЛИ, как показано ниже.
var $hasMany = array(
'Event' => array(
'className' => 'Event',
'foreignKey' => 'listing_id',
'dependent' => true,
'conditions' => array('Event.listing_id' => '0'),
)
);
Выше генерируется этот SQL
SELECT `Event`.`id`, `Event`.`listing_id`, `Event`.`type_id`, `Event`.`when`, `Event`.`name`, `Event`.`description`, (DATE_FORMAT(`Event`.`when`, '%d')) AS `Event__day`, (DATE_FORMAT(`Event`.`when`, '%a')) AS `Event__dayN`, (DATE_FORMAT(`Event`.`when`, '%Y')) AS `Event__year`, (DATE_FORMAT(`Event`.`when`, '%h:%i %p')) AS `Event__time` FROM `events` AS `Event` WHERE `Event`.`listing_id1` = '0' AND `Event`.`listing_id` IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61)
Нужно изменить это:
WHERE `Event`.`listing_id` = '0' AND `Event`.`listing_id` IN
К
WHERE `Event`.`listing_id` = '0' OR `Event`.`listing_id` IN