2013-08-28 48 views
0

enter image description here如何設置中可容納的行爲+ cakephp2.x

這裏是我中可容納的條件

$userStatusCondition = array('AND' => array(
                'OR'=> array(
                    'TransactionStatus.buyer_status_id'=>$user_status_id, 
                    'TransactionStatus.seller_status_id'=>$user_status_id, 
                   ) 
                  ) 
               ); 

合併條件(其他條件+ user_status條件)

$transactions = $this->Transaction->find('all',array(
                  'conditions'=> Set::merge($otherConditions, $userStatusCondition), 
                  'recursive'=>2)); 
在TransactionModel

我設置

public $actsAs = array('Containable'); 

public $belongsTo = array(
      'UserStatus' => array(
     'className' => 'UserStatus', 
     'foreignKey' => 'buyer_status_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
      'UserStatus' => array(
     'className' => 'UserStatus', 
     'foreignKey' => 'seller_status_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
    ); 

問題

1)我不喜歡用遞歸2:減少該find方法 - 我怎麼想過之後中可容納正確的,我想我需要刪除遞歸
2)我有四個user_statuses在User_Status表1)等待2)注意3)塊4)完成,我想找到buyer_status_id過濾交易或seller_status_id

我唐諾如何創建新的行爲 - 有關於它的 Using Contain

+0

你想完成什麼? – Ikong

+0

我有User_Status表中的四個user_status 1)等待2)關注3)塊4)完成哪個我想查找由buyer_status_id過濾的交易或seller_status_id – Fury

+0

而不是使用可容納我回答了一種替代方法。希望它會給你一個想法。 – Ikong

回答

1

的另一種方式的小條鏈接到表關係是使用bindMod el強制加入。

下面是一個綁定4個表格Items-> Categories-> Sections-> divisions的代碼。你可以在關係範圍內找到任何東西。

$this->unbindModel(array(
    'belongsTo' => array('Category') 
)); 

$this->bindModel(array(
    'hasOne' => array(
     'Category' => array(
      'foreignKey' => false, 
      'conditions' => array('Category.id = Item.category_id') 
     ), 
     'Section' => array(
      'foreignKey' => false, 
      'conditions' => array('Section.id = Category.section_id') 
     ) 
     'Division' => array(
      'foreignKey' => false, 
      'conditions' => array('Division.id = Section.division_id') 
     ) 
    ) 
)); 
$result = $this->find('first', array(
    'conditions' => array('Item.id' => $id), 
    'contain' => array('Category', 'Section', 'Division'), 
    'fields' => array('Division.id') 
)); 

通過這樣做,您可以隨意查詢表格範圍內的任何內容。

更多信息在這裏:http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations

+0

謝謝你的身體。我讀過這篇文章,但由於它不深入,我無法實現它。我現在再試一次。我讓你知道 - 我是否還需要使用public $ actsAs = array('Containable');在TransactionModel – Fury

+0

我已經成功實現它我自己我相信你也可以。乾杯 – Ikong

+0

你不一定要把$ actsAs = array('Containable');.確保你在綁定模型中檢查了正確的條件。 – Ikong

相關問題