php - Yii2在beforeSave()和update(或insert)中检查模型三个字段的存在组合

标签 php activerecord yii2

我正在尝试检查 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/

相关文章:

ckeditor - Yii 2 CKeditor 未通过验证

css - Yii 2 应用程序中缺少 Bootstrap 3 标注

javascript - 注册表无法正常工作并将数据存储在数据库中(PHP/MYSQL)

javascript - 从外部 javascript 文件中读取 var 并将其转换为 php 变量

ruby-on-rails - 在 Rails 中的一次调用中保存多个对象

ruby-on-rails - 访问与 Activerecord 访问器分开的数据库值

php - Yii2 Url::remember() 是如何工作的?

php - 如何使用 MySQL PDO 检测数据库名称

php - 通过 HTML 中的 json_encode 填充 Vue 实例数据

ruby-on-rails - Rails 与 activerecord 共享 session