实际上在我的场景中,我是模型构造函数中的绑定关系。实际上我需要在我的模型关系中使用模型属性,并且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()
函数下绑定关系时,无法删除依赖模型。有没有办法使这个技巧有效或我需要手动触发依赖功能?
答案 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
);