如何设置可包含的行为+;cakephp2.x

如何设置可包含的行为+;cakephp2.x,cakephp,cakephp-2.0,cakephp-2.1,Cakephp,Cakephp 2.0,Cakephp 2.1,这是我的可控制状态 $userStatusCondition = array('AND' => array( 'OR'=> array( 'TransactionStatus.buyer_status_id'=>$user_status_i

这是我的可控制状态

$userStatusCondition = array('AND' => array(
                                                     'OR'=> array(
                                                                    'TransactionStatus.buyer_status_id'=>$user_status_id,
                                                                    'TransactionStatus.seller_status_id'=>$user_status_id,
                                                                )
                                                            )
                                                );
$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) 我不喜欢使用recursive 2:它减少了find方法—无论我如何认为在正确地包含之后,我都认为我需要删除recursive

2) 我在用户状态表1)中有四个用户状态等待2)注意3)方框4)完成,我想查找按买方状态id或卖方状态id过滤的交易

我不知道如何创造新的行为——有一篇关于它的小文章

链接到表关系的另一种方法是使用bindModel强制联接。

下面是绑定4个表项->类别->部分->分区的代码。你可以在关系范围内找到任何东西

$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')
));

通过这样做,您可以自由查询表范围内的任何内容

此处的更多信息:

您想完成什么?我在用户状态表中有四个用户状态1)等待2)注意3)块4)完成,我想查找按买方状态id或卖方状态id过滤的交易,而不是使用可包含的我回答了另一种方式。希望它能给你一个想法。谢谢你的身体。我读了这篇文章,但我无法实现它,因为它不够深入。我现在再试一次。我让你知道-我还需要使用public$actsAs=array('Containable');在TransactionModel中,我自己已经成功地实现了它,我相信您也可以。干杯你不必把$actsAs=array('Containable');。确保在绑定模型中检查了正确的条件。我在TransactionController中使用过它,但它不起作用:(