thinkphp6自定义unique

<?php

namespace app\validate\admin;

use think\Validate;
use think\facade\Db;

class UsersValidate extends Validate
{
    protected $rule = [
        'name' => 'require',
        'id_card' => 'require|idCard',
        'phone' => 'require|checkUnique:users,phone,id',
    ];

    protected $message  =   [
        'name.require'=> '姓名必须填写',
        'id_card.require'=> '身份证号必须填写',
        'id_card.idCard'=> '身份证号格式不正确',
        'phone.require'=> '手机必须填写',
        'phone.checkUnique'=> '手机号已存在',
    ];

    protected function checkUnique($value, $rule, $data)
    {
        [$table, $field, $id] = explode(',', $rule);
        $idField = $id ?: 'id';
        $idValue = $data[$idField] ?? null;
        $map = [
            [$field, '=', $value],
        ];
        if (!is_null($idValue)) {
            $map[] = [$idField, '<>', $idValue];
        }
        return !Db::table($table)->where($map)->count();
    }
}

控制器中调用

        $data = $this->request->params(['name','phone','id_card','id']);
        $validate = new UsersValidate();
        $validate->check($data);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值