在__construct函数中绑定关系时,Dependent不起作用 - CAKEPHP

时间:2016-03-15 14:24:22

标签: cakephp

实际上在我的场景中,我是模型构造函数中的绑定关系。实际上我需要在我的模型关系中使用模型属性,并且Cakephp阻止在默认关系中使用模型属性。所以我不能用

public $hasMany = array(
        'ProductDetail' => array(
            'className' => 'ProductDetail',
            'conditions' => array(
                'ProductDetail.language_id' => $this->languageId //Throws error
            ),
            'dependent' => true
        ),
    );

所以我做了一个技巧。我确实在模型的__construct()函数上绑定了模型关系。以下是我的代码

public function __construct($id = false, $table = null, $ds = null) {
        parent::__construct($id, $table, $ds);
        $this->bindModel(array(
            "hasMany" => array(
                'ProductDetail' => array(
                    'className' => 'ProductDetail',
                    'dependent' => true,
                    'conditions' => array(
                        'ProductDetail.language_id' => $this->languageId //Doesn't throw an error
                    )
                )
            )
                )
        );
    }

这个技巧在每个场景中都适用于我。但是当我删除产品时,当我在__construct()函数下绑定关系时,无法删除依赖模型。有没有办法使这个技巧有效或我需要手动触发依赖功能?

1 个答案:

答案 0 :(得分:0)

进行研究后,我发现在false函数上将第二个参数传递给bindModel。因为这将使您的动态绑定持续到请求的持续时间。所以在这种情况下Model::bindModel函数看起来像

$this->bindModel(array(
            "hasMany" => array(
                'ProductDetail' => array(
                    'className' => 'ProductDetail',
                    'dependent' => true,
                    'conditions' => array(
                        'ProductDetail.language_id' => $this->languageId
                    )
                )
            )
                ), false
        );