2011-09-27 91 views
0

我需要帮助来解决CakePHP 1.1项目和findAll查询的问题。通过在CakePHP 1.1中关联发现所有过滤器

下面是查询:

$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:该项目太大,无法迁移该版本。

回答

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。

+0

我尝试了你的HasMany,但给我一个“未知列'Event.event_category_id'在'字段lis”中,我的关联是IDENTICAL,但在HasMany中没有“'Event'=> array(..”没有.. condicion Event.d = X不工作(“未知的列'Event.id'在'where .:”) – Zenth

+0

@第十三不知道你从哪里得到Event.event_category_id,是你的关联错字?还有,要么将'递归'减少到0或1,要么更好地重命名'Event'=> array(...以上就像'EventCategoryEvent'=> array(...所以不会与事件发生冲突来自EventSubcategory与事件的关联。 – ianmjones