2013-08-28 26 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