2011-09-27 93 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