yii如何简化检查,然后插入
我正在使用Yii 1在数据不存在时插入数据yii如何简化检查,然后插入,yii,Yii,我正在使用Yii 1在数据不存在时插入数据 $email = 'xx@xx'; if( ! people::model()->exists("email = :email", array(':email'=>$email) ){ $people = new people(); $people->email = $email; $people->xx = xx // ... save } 我想这样写,既简单又快速: $peopl
$email = 'xx@xx';
if( ! people::model()->exists("email = :email", array(':email'=>$email) ){
$people = new people();
$people->email = $email;
$people->xx = xx
// ... save
}
我想这样写,既简单又快速:
$people = new people();
$people->email = $email;
if( ! $people->exists() ){
$people->xx = xx
// ... save
}
yii CActiveRecord是否有办法做到这一点,或者需要我扩展CActiveRecord?是的,yii在CActiveRecord中确实有一个存在的方法。只需指定条件并调用exists(),模型将返回是否存在满足这些条件的记录
您不需要将CActiveRecord扩展到特定模型定义中的典型方式之外。是的,Yii在CActiveRecord中确实有一个exists方法。只需指定条件并调用exists(),模型将返回是否存在满足这些条件的记录 您不需要将CActiveRecord扩展到特定模型定义中的典型方式之外。简单地说,您可以在模型规则中使用validator
public function rules()
{
return array(
array('field1,field2, field3, email, field4', 'required'),
array('email', 'email','message'=>'Invalid email.'),
array('email', 'unique', 'message' => 'Email already exists!'),
...................
...................
}
简单地说,您可以在模型规则中使用验证器
public function rules()
{
return array(
array('field1,field2, field3, email, field4', 'required'),
array('email', 'email','message'=>'Invalid email.'),
array('email', 'unique', 'message' => 'Email already exists!'),
...................
...................
}
Yii对复合唯一密钥验证有限制。请点击此处: 因此,我建议采用这种独特的验证方式 在规则上,
array('username', 'validateUniqueUsername'),
然后是方法定义
public function validateUniqueUsername($attribute, $params)
{
$validator = new CUniqueValidator();
$validator->attributes = array($attribute);
$validator->validate($this, array($attribute));
if ($this->hasErrors($attribute)) {
$this->clearErrors($attribute);
$this->addError('username', Yii::t('auth', 'Username "'.$this->username.'" has already been taken.'));
}
}
参考:Yii对复合唯一密钥验证有限制。请点击此处: 因此,我建议采用这种独特的验证方式 在规则上,
array('username', 'validateUniqueUsername'),
然后是方法定义
public function validateUniqueUsername($attribute, $params)
{
$validator = new CUniqueValidator();
$validator->attributes = array($attribute);
$validator->validate($this, array($attribute));
if ($this->hasErrors($attribute)) {
$this->clearErrors($attribute);
$this->addError('username', Yii::t('auth', 'Username "'.$this->username.'" has already been taken.'));
}
}
Ref:您还可以在模型中放入逻辑,
beforeValidate()
函数您也可以在模型中放入逻辑,beforeValidate()
函数这还将帮助您根据需要自定义错误消息。这也将帮助您根据需要自定义错误消息。