SQLSTATE[23000]:违反完整性约束:1048 laravel 5.7
SQLSTATE[23000]: Integrity constraint violation: 1048 laravel 5.7
我在 Laravel 5.7 中遇到错误:
Illuminate\Database\QueryException
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into stores
(name
, matric
, phone
, email
, password
, updated_at
, created_at
) values (?, ?, ?, ?, ?, 2019-10-01 16:29:49, 2019-10-01 16:29:49))
这是我的表格:
<!DOCTYPE html>
<html>
<head>
@section('title', 'Sign up for customer page')
</head>
<body class="text-center">
@extends('layout.app')
@section('content')
@endsection
@include('include.navbar')
<form class="form-signup" action="{{URL:: to('/store')}}" method="post">
@csrf
<h1 class="h3 mb-3 font-weight-normal">Please sign up as customer</h1>
<label for="inputname" class="sr-only">Name</label>
<input type="text" id="inputname" class="form-control" placeholder="Name" required>
<label for="inputmatric" class="sr-only">ID matric</label>
<input type="text" id="inputmatric" class="form-control" placeholder="ID matric" required>
<label for="inputphon" class="sr-only">Phone No</label>
<input type="text" id="inputphon" class="form-control" placeholder="Phone No" required>
<label for="inputemail" class="sr-only">E-mail</label>
<input type="text" id="inputemail" class="form-control" placeholder="E-mail" required>
<label for="inputpassword" class="sr-only">Password</label>
<input type="text" id="inputpassword" class="form-control" placeholder="Password" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
<p class="mt-5 mb-3 text-muted">© 2017-2019</p>
</form>
</html>
这是UserController
:
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\DB;
use App\store;//model name
class UserController extends Controller
{
public function store(Request $request)
{
$this->validate($request,[
'name'=> 'request',
'matric'=> 'request',
'phone'=> 'request',
'email'=>'request',
'password'=> 'request'
]);
//store new customer
$store = new store; // valible and model name
$store-> name = $request->input('name');
$store-> matric = $request->input('matric');
$store-> phone = $request->input('phone');
$store-> email = $request->input('email');
$store-> password = $request->input('password');
//save new customer
$store-> save();
//redirect
return redirect('/');
}
}
这是迁移:
<?php
//create the customer table
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStoresTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('stores', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string ('name');
$table->integer ('matric');
$table->string ('phone');
$table->string ('email');
$table->string ('password');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('stores');
}
}
您正试图在名称列中保存空值,尽管它是必需的。
您的 html 表单中缺少 name
属性。如果没有此属性,您的输入数据将不会传递给控制器,因此您将获得空值。因此,将 name
属性添加到输入字段。
<label for="inputname" class="sr-only">Name</label>
<input type="text" id="inputname" name="name" class="form-control" placeholder="Name" required>
<label for="inputmatric" class="sr-only">ID matric</label>
<input type="text" id="inputmatric" name="matric" class="form-control" placeholder="ID matric" required>
<label for="inputphon" class="sr-only">Phone No</label>
<input type="text" id="inputphon" name="phone" class="form-control" placeholder="Phone No" required>
<label for="inputemail" class="sr-only">E-mail</label>
<input type="text" id="inputemail" name="email" class="form-control" placeholder="E-mail" required>
<label for="inputpassword" class="sr-only">Password</label>
<input type="text" id="inputpassword" name="password" class="form-control" placeholder="Password" required>
同时更改您的验证
$this->validate($request,[
'name'=> 'required',
'matric'=> 'required',
'phone'=> 'required',
'email'=>'required',
'password'=> 'required'
]);
您应该用 name="namehere"
命名您的输入
例如
<input type="text" id="inputname" name="name" class="form-control" placeholder="Name" required>
您还可以采取以下步骤在您的 Laravel 网站中绕过此错误:-
更新位于路径 \config\
的 database.php
文件中的 'strict' => false
在位于路径 \app\Http\
的 Kernel.php
文件中的语句下方注释
//
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
希望对以后的人有所帮助。
您可能以文本格式发送数据:
。 text pic
. json pic
我在 Laravel 5.7 中遇到错误:
Illuminate\Database\QueryException SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into
stores
(name
,matric
,phone
,password
,updated_at
,created_at
) values (?, ?, ?, ?, ?, 2019-10-01 16:29:49, 2019-10-01 16:29:49))
这是我的表格:
<!DOCTYPE html>
<html>
<head>
@section('title', 'Sign up for customer page')
</head>
<body class="text-center">
@extends('layout.app')
@section('content')
@endsection
@include('include.navbar')
<form class="form-signup" action="{{URL:: to('/store')}}" method="post">
@csrf
<h1 class="h3 mb-3 font-weight-normal">Please sign up as customer</h1>
<label for="inputname" class="sr-only">Name</label>
<input type="text" id="inputname" class="form-control" placeholder="Name" required>
<label for="inputmatric" class="sr-only">ID matric</label>
<input type="text" id="inputmatric" class="form-control" placeholder="ID matric" required>
<label for="inputphon" class="sr-only">Phone No</label>
<input type="text" id="inputphon" class="form-control" placeholder="Phone No" required>
<label for="inputemail" class="sr-only">E-mail</label>
<input type="text" id="inputemail" class="form-control" placeholder="E-mail" required>
<label for="inputpassword" class="sr-only">Password</label>
<input type="text" id="inputpassword" class="form-control" placeholder="Password" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
<p class="mt-5 mb-3 text-muted">© 2017-2019</p>
</form>
</html>
这是UserController
:
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\DB;
use App\store;//model name
class UserController extends Controller
{
public function store(Request $request)
{
$this->validate($request,[
'name'=> 'request',
'matric'=> 'request',
'phone'=> 'request',
'email'=>'request',
'password'=> 'request'
]);
//store new customer
$store = new store; // valible and model name
$store-> name = $request->input('name');
$store-> matric = $request->input('matric');
$store-> phone = $request->input('phone');
$store-> email = $request->input('email');
$store-> password = $request->input('password');
//save new customer
$store-> save();
//redirect
return redirect('/');
}
}
这是迁移:
<?php
//create the customer table
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStoresTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('stores', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string ('name');
$table->integer ('matric');
$table->string ('phone');
$table->string ('email');
$table->string ('password');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('stores');
}
}
您正试图在名称列中保存空值,尽管它是必需的。
您的 html 表单中缺少 name
属性。如果没有此属性,您的输入数据将不会传递给控制器,因此您将获得空值。因此,将 name
属性添加到输入字段。
<label for="inputname" class="sr-only">Name</label>
<input type="text" id="inputname" name="name" class="form-control" placeholder="Name" required>
<label for="inputmatric" class="sr-only">ID matric</label>
<input type="text" id="inputmatric" name="matric" class="form-control" placeholder="ID matric" required>
<label for="inputphon" class="sr-only">Phone No</label>
<input type="text" id="inputphon" name="phone" class="form-control" placeholder="Phone No" required>
<label for="inputemail" class="sr-only">E-mail</label>
<input type="text" id="inputemail" name="email" class="form-control" placeholder="E-mail" required>
<label for="inputpassword" class="sr-only">Password</label>
<input type="text" id="inputpassword" name="password" class="form-control" placeholder="Password" required>
同时更改您的验证
$this->validate($request,[
'name'=> 'required',
'matric'=> 'required',
'phone'=> 'required',
'email'=>'required',
'password'=> 'required'
]);
您应该用 name="namehere"
命名您的输入
例如
<input type="text" id="inputname" name="name" class="form-control" placeholder="Name" required>
您还可以采取以下步骤在您的 Laravel 网站中绕过此错误:-
更新位于路径
的\config\
database.php
文件中的'strict' => false
在位于路径
的\app\Http\
Kernel.php
文件中的语句下方注释
// \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
希望对以后的人有所帮助。
您可能以文本格式发送数据:
。 text pic
. json pic