面对批量提交的数据,在使用saveAll方法前,如何验证其数据有效性

来源:3-2 使用模型查询数据

ilovemooc

2020-04-23 06:03

在保存单一记录数据前,有多种方法验证其数据有效性,如使用独立的验证器,或控制器的validate方法都可进行。但面对批量提交的数据,如何有效地验证其数据有效性,一直没有找到好的方法,通过查看源码,发现模型类有一个validate属性,在调用saveAll方法时,会自动使用该属性进行验证,但如果想使用自定义验证方法,不知如何使用?

写回答 关注

1回答

  • 离歌笑_0002
    2020-05-30 17:17:19

    独立验证

    任何时候,都可以使用Validate类进行独立的验证操作,例如:

    $validate = new Validate([
        'name'  => 'require|max:25',
        'email' => 'email']);$data = [
        'name'  => 'thinkphp',
        'email' => 'thinkphp@qq.com'];if (!$validate->check($data)) {
        dump($validate->getError());}

    验证器

    这是5.0推荐的验证方式,为具体的验证场景或者数据表定义好验证器类,直接调用验证类的check方法即可完成验证,下面是一个例子:

    我们定义一个\app\index\validate\User验证器类用于User的验证。

    namespace app\index\validate;use think\Validate;class User extends Validate{
        protected $rule = [
            'name'  =>  'require|max:25',
            'email' =>  'email',
        ];}

    在需要进行User验证的地方,添加如下代码即可:

    $data = [
        'name'=>'thinkphp',
        'email'=>'thinkphp@qq.com'];$validate = Loader::validate('User');if(!$validate->check($data)){
        dump($validate->getError());}

    使用助手函数实例化验证器

    $validate = validate('User');


快速入门ThinkPHP 5.0 --模型篇

Thinkphp5.0已发布多时,想了解thinkphp 5.0的新特性吗?老司机点准时出发

27110 学习 · 100 问题

查看课程

相似问题