最近我遇到了有趣的情况。 我有2个模型:帐户(ID,用户名,密码)和帖子(id,account_id,title,...) 我通过wiki创建了表单。一切正常。但我的问题是帐户 - >用户名必须是唯一的))) 所以,我决定将验证规则添加到模型账户:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
---
array('username', 'checkForUnique'),
---
);
}
public function checkForUnique($attribute, $params)
{
$model = $this->findByAttributes(array("username" => $this->$attribute));
if ($model) {
// I do not know what to do
}
}
我的问题是: 如何检查用户名和用户名是否已存在,将模型帐户的实例更改为$ model
答案 0 :(得分:1)
对于验证唯一值,您可以添加以下规则:
public function rules()
{
return array(
...
array('username', 'unique'),
...
);
}
你应该在控制器中检查模型,如果已经存在具有相同用户名的模型而不是使用它,如果不存在 - 则使用新实例:
你的控制器:
...
$model = $this->findByAttributes(array("username" => $_POST["Account"]["username"]));
if(is_null($model)){
$model = new Account();
}
...
然后在$ model中填入数据,验证并保存。