我正在尝试检查 beforeSave 函数中的重复数据。但它无法正常工作:有我的 beforeSave 函数体:
$duplicate=self::find()->where(["u_id"=>$this->attributes["u_id"],"link_doc_id"=>$this->attributes["link_doc_id"],"link_doc_type"=>$this->attributes["link_doc_type"]])->one();
if($duplicate){
$insert=false;
$this->or_id=$duplicate->or_id;
}
但我收到重复的完整性约束违规错误
。我知道当我手动设置 $this->or_id
时我做错了。那么如何检查数据库中的重复数据呢?
我的验证规则:
public function rules()
{
return [
[['reorder', 'link_doc_id', 'u_id', 'period', 'close_doc_id', 'close_uid'], 'integer'],
[['create_date', 'deadline', 'close_date', 'view','description' ], 'safe'],
[['close_description'], 'string'],
[['link_doc_type', 'close_doc_type'], 'string', 'max' => 20],
[['desc'], 'string', 'max' => 50]
];
}
最佳答案
在模型中添加'u_id'、'link_doc_id'、'link_doc_type'
独特的验证,例如...
public function rules()
{
return [
[['reorder', 'link_doc_id', 'u_id', 'period', 'close_doc_id', 'close_uid'], 'integer'],
[['create_date', 'deadline', 'close_date', 'view','description' ], 'safe'],
[['close_description'], 'string'],
[['link_doc_type', 'close_doc_type'], 'string', 'max' => 20],
[['desc'], 'string', 'max' => 50],
[['u_id', 'link_doc_id', 'link_doc_type'], 'unique', 'targetAttribute' => ['u_id', 'link_doc_id', 'link_doc_type'], 'message' => 'Error Message hear']
];
}
关于php - Yii2在beforeSave()和update(或insert)中检查模型三个字段的存在组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34297179/