在CakePHP 1.1中关联的findAll过滤器

时间:2011-09-27 11:34:10

标签: cakephp

我需要帮助来解决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

问题是,我需要通过Event.id = X进行过滤,在Cake 1.2+中我使用相关表的包含和过滤,但在1.1中我找不到文档来制作它。

PS:项目太大,无法迁移版本。

1 个答案:

答案 0 :(得分:0)

您是否尝试过将Event.id添加到您的条件中?如果你有正确的递归设置(它看起来像你有),这可能会有用。

如果您想确定,那么也可能值得将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' => ''
  )
);

确保在EventSubcategory之后将事件添加到$ hasMany。