SQLSTATE [23000]:违反完整性约束:1048列“标题”不能为空

时间:2019-10-14 17:51:25

标签: sql laravel

SQLSTATE [23000]:违反完整性约束:1048列'title'不能为空(SQL:插入poststitlebodyupdated_at,{ {1}})值(?,?,2019-10-14 17:41:00,2019-10-14 17:41:00))

控制器(CRUD)控制器

created_at

模型(后模型)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
 use App\post;
class postcontroller extends Controller
{


    public function store(Request $request)
    {

    $add = new post;
    $add->title= $request->input('title');
    $add->body= $request->input('body');;
    $add->save();

    session()->flash('msg','new post added successfully!');

    return redirect()->route('posts.show',$add->id);
    }

view->(这只是使用laravelcollective的一种方式)

1 个答案:

答案 0 :(得分:1)

您似乎为标题发送了空值,并且为了更早地在应用程序中发现验证错误,您应该考虑在控制器中引入一些验证功能

    <?php


namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\post;

class postcontroller extends Controller
{
    public function store(Request $request)
    {
       $request->validate([
        'title' => 'required',
        'body' => 'required',
       ]);

       $add = Post::create([
          'title' => $request->input('title'),
          'body'  => $request->input('body')
       ]);

        session()->flash('msg','new post added successfully!');

        return redirect()->route('posts.show', $add->id);
    }

确保已正确设置表单中的titlebody字段

<form><!-- / Dont forget the action, crf and other required attr of form -->

   <input type="text" name="title">
   <textarea name="body"></textarea>
</form>

通过https://laravel.com/docs/master/validation#validation-quickstart

了解有关表单验证的更多信息