SQLSTATE [23000]:完整性约束违规:1048 Laravel中的列'name'不能为null

问题描述 投票:0回答:3

如何解决这个问题?请帮忙。

管理控制器文件:这是我的控制器文件。

   use Illuminate\Http\Request;
     use App\admins;
     class AdminController extends Controller{
        public function register(Request $request){
             $register  = new admins();
             $register->name = $request->input('name');
             $register->email = $request->input('email');
             $register->password = $request->input('password');
             $register->save();
             return redirect('/admin_register')->with('success', 'Register Sucessully!');
         }

        }

路线文件:

      Route::post('/admin_register',     'AdminController@register')->name('admin_register');
      Route::get('/admin_register',  'AdminController@register')->name('admin_register');

模型文件

     namespace App;
     use Illuminate\Database\Eloquent\Model;
       class admins extends Model{
        protected $fillable = [
           'name', 'email', 'password',
        ];
    }

admin_register.blade:

      <form method="post" action="shareholder" role="form"   id="vehicle_form" name="vehicle_form" data-parsley-validate novalidate>

     <div id="success_msg" class="alert alert-success alert-dismissable">  </div>
        <input type="hidden" name="_token" value="{{csrf_token()}}">
         <input type="text" name="name" id="vehicle_no"  value="" placeholder="Enter Your Name" class="form-control">
         <input type="text" name="email" id="vehicle_no" value="" placeholder="Enter your Email" class="form-control">
         <input type="text" name="password" id="vehicle_no" value="" placeholder="Enter your Password" class="form-control">
        <input type="submit" value="REGISTER">
      </form>
laravel
3个回答
0
投票

如果name字段不是必需字段,请在迁移中使字段为空:

$table->string('name', 100)->nullable();

另请注意,元素ID在文档中应该是唯一的


0
投票

你的GET指向你的register方法。

  1. 当你试图访问/admin_register时,它将尝试创建一个新用户,但$request将是空的,因为你没有POST任何东西。
  2. 假设请求不为空并传递save()方法,它将重定向您在循环中的相同方法,因为您的重定向

而是添加一个新的方法,如:

public function redirectForm(){
    return view('admin_register');
}

并将您的路线更改为:

Route::post('/admin_register', 'AdminController@register')->name('admin_register');
Route::get('/admin_register', 'AdminController@registerForm')->name('admin_register_form');

0
投票

你的观点中有一个拼写错误

 <form method="post" action="{{route('admin_register')}}" role="form"   id="vehicle_form" name="vehicle_form" data-parsley-validate novalidate>

 <div id="success_msg" class="alert alert-success alert-dismissable">  </div>
    <input type="hidden" name="_token" value="{{csrf_token()}}">
     <input type="text" name="name" id="vehicle_no"  value="" placeholder="Enter Your Name" class="form-control">
     <input type="text" name="email" id="vehicle_no" value="" placeholder="Enter your Email" class="form-control">
     <input type="text" name="password" id="vehicle_no" value="" placeholder="Enter your Password" class="form-control">
    <input type="submit" value="REGISTER">
  </form>

在你的代码action='shareholder'哪个错了。把它设置为action='{{route('admin_register')}}'

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.