服务热线:0515-66884500 服务QQ:251021233 返回主页

Tp5.1验证规则的字段唯一补充

时间:2019-12-16 19:25 作者:stayout 点击:
使用场景:有一个用户表(user)内有字段name、type,要求在新增或修改时,判断name在user表内是否唯一当type字段等于某个值时。

大白话:在添加一个用户时,要输入名称(name)、类别(type),不同的type值时,名称可以重复,否则不能。



class ClientStateList extends Validate
{
    protected $rule = [
        'name' => 'checkName',
    ];

    protected $message = [
        'name.checkName' => '名称重复,请修改'
    ];

    /**
     * @author vancens's a.qiang
     * @title 验证name字段是否唯一(在同等company_id字段情况下)
     * @time 2019/4/2 5:25
     * @param $value
     * @param $rules
     * @param array $data
     * @return bool
     * @throws 	hinkdbexceptionDataNotFoundException
     * @throws 	hinkdbexceptionModelNotFoundException
     * @throws 	hinkexceptionDbException
     */

    protected function checkName($value,$rules,$data=[]){
        //如果存在id,为修改,否则为新增
        if (array_key_exists('id',$data)){
            $mod = new ppdminmodelClientStateList();
            $ret = $mod
                ->where(['name'=>$value,'company_id'=>$data['company_id']])
                ->where('id','<>',$data['id'])
                ->find();
        }else{
            $mod = new ppdminmodelClientStateList();
            $ret = $mod->where(['name'=>$value,'company_id'=>$data['company_id']])->find();
        }

        if ($ret){
            return false;
        }else{
            return true;
        }

    }
}