findAll过滤器与CakePHP 1.1相关联



我需要帮助解决一个问题与CakePHP 1.1项目,和findAll查询。

下面是查询:

$events = $this->EventCategory->findAll(null, null, array("EventCategory.name" => "ASC"));

这是一个结果数组的例子:

    [1] => Array
    (
        [EventCategory] => Array
            (
                [id] => 1
                [name] => Agencias
                [date] => 2009-12-15 16:07:08
            )
        [EventSubcategory] => Array
            (
                [0] => Array
                    (
                        [id] => 2
                        [event_category_id] => 1
                        [name] => Agencias de marketing promocional
                        [date] => 2009-12-15 16:09:51
                        [Event] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 1
                                        [event_subcategory_id] => 2

问题是,我需要按事件进行过滤。id = X,在Cake 1.2+中,我使用关联表的包含和过滤,但在1.1中,我没有找到这样做的文档。

PS:项目太大,不能迁移版本

是否尝试添加Event。我同意你的条件吗?如果你有正确的递归集合(看起来你有),这可能会起作用。

如果你想要确定,那么它可能值得添加事件到你的EventCategory模型。

var $hasMany = array(
  'EventSubcategory' => array(
    'className' => 'EventSubcategory',
    'foreignKey' => 'event_category_id',
    'dependent' => false,
    'conditions' => '',
    'fields' => '',
    'order' => ''
  ),
  'Event' => array(
    'className' => 'Event',
    'foreignKey' => false,
    'dependent' => false,
    'conditions' => 'Event.event_subcategory_id = EventSubcategory.id',
    'fields' => '',
    'order' => ''
  )
);

确保Event被添加到EventSubcategory之后的$hasMany .

最新更新