在CakePHP

时间:2015-04-27 18:02:18

标签: cakephp

我正在使用CakePHP 2.6.3。

我对同一个模型有多个关联,我想根据它的关联应用一些稍微不同的beforeValidate()逻辑。我认为模型$this->alias会更新为关联的别名,但它似乎只是类名。

使用食谱中的Multiple Relations to Same Model示例,如何判断发件人(用户模型)或收件人(用户模型)是否正在验证?

function beforeValidate($options = array()) {
    if ($association == 'Sender') {
        // do something
    } else {
        // do something different
    }
}

1 个答案:

答案 0 :(得分:1)

当通过关联使用模型时,$ alias属性仅使用与原始模型名称不同的名称。别名应始终在模型本身中使用。例如$this->Blog->Author用户模型的别名是“作者”,假设如下:

$belongsTo = ['Author' => ['className' => 'User']];

因此,要么通过验证的一方保存数据,要么只是将标识符与数据一起传递。

if ($this->data[$this->alias]['is_sender'] == true) { /*...*/ } else { /*...*/ }

在你的beforeValidate()。

如果它不是发件人那么它就是接收者。