Php Laravel表单验证程序错误

Php Laravel表单验证程序错误,php,laravel,api,validation,laravel-5.3,Php,Laravel,Api,Validation,Laravel 5.3,我想在将数据存储到数据库之前验证输入字段,所以我浏览了laravel文档并遵循了以下步骤 php工匠制作:请求StoreLessons 在StoreLessons public function rules() { return [ 'title' => 'required|unique:lesson', 'body' => 'required', ]; } 在我的控制器中 现在我得

我想在将数据存储到数据库之前验证输入字段,所以我浏览了laravel文档并遵循了以下步骤

  • php工匠制作:请求StoreLessons
  • StoreLessons

    public function rules()
        {
            return [
                'title' => 'required|unique:lesson',
                'body' => 'required',
            ];
        }
    
  • 在我的控制器中

  • 现在我得到了这个错误

    QueryException in Connection.php line 770:
    SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel_api.lesson' doesn't exist (SQL: select count(*) as aggregate from `lesson` where `title` = the)
    
    我不知道它为什么要找
    课程
    表格我有一个
    课程
    表格

    但是
    store()
    函数使用默认验证

    //this works fine but i wan to do the validation 
        public function store() 
        {
            if (! input::get('title') or ! input::get('body')) {
                return $this->respondBadRequest();
            }
    
            Lesson::create(input::all());
    
            return $this->respondCreated('Lesson created successfully');
        }
    
    多谢各位

    unique:table,column,except,idColumn
    
    唯一语法如上所述,传递的第一个参数是表名

    public function rules() { 
        return [ 'title' => 'required|unique:lesson', 'body' => 'required', ];
    }
    

    这里的唯一规则查找表
    lesson
    。尝试将其更改为
    课程

    请在相关模型类名后的下一行中这样写

    public function rules()
        {
            return [
                'title' => 'required|unique:lesson',
                'body' => 'required',
            ];
        }
    
    类xyz扩展模型 { 受保护的$table='课程'

    代码---

    }


    试试这个。

    与您的问题无关,但是,根据laravel命名约定,您的型号名称应该是
    Lesson
    ,而不是
    Lesson
    。因此,此模型将自动在您的数据库中找到表
    lessons
    。嘿,感谢您的时间,在
    unique:lesson
    更改为
    lessons
    时出现了一个错误,我的意思不是在您的验证规则中,而是在模型的名称中
    use App\lesson
    应该是
    use App\lesson
    非常感谢您的工作,您能告诉我如何将错误作为
    JSON
    传递到视图吗?现在,如果我发送带有空字段的请求,一旦您通过验证,我将重定向到
    welcom.blabe.php
    ,如果存在验证错误,请执行此操作<代码>返回响应()->json($validator->errors(),422)。这里,
    $validator
    是您的验证结果。您能告诉我如何使用我的方法来执行此操作吗?我必须返回成功和失败
    公共函数存储(StoreLessons$request){Lesson::create($request->all());return response()->json($validator->errors(),422)//Lesson::create(input::all());return$this->respondCreated('Lesson created successfully');}
    看看,默认情况下,Laravel 5.3会发送一个错误,状态代码为422。因此,删除我在控制器中建议的上述行。在ajax中,
    error函数
    console.log(respnsoe)。检查PHPMick答案。我正在构建一个API,因此我没有
    ajax
    ,因此我想知道如何将这些错误消息作为JSON发送,如果可能的话,请您发布一些示例代码,正如您所说,我在422中没有收到任何laravel默认消息,我正在使用postman测试API,所以当我用空feild发布时,我会看到laravel主页