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

时间:2018-03-03 15:06:28

标签: laravel

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

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

n

路线档案:

   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');

admin_register.blade:

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

3 个答案:

答案 0 :(得分:0)

如果name字段不是必填字段,请在迁移中将该字段设为可为空:

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

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

答案 1 :(得分:0)

您的GET指向register方法。

  1. 当您尝试访问/admin_register时,它会尝试创建新用户,但由于您没有$request任何内容,POST将为空。
  2. 假设请求不为空且传递save()方法,由于您的重定向,它会在循环中将您重定向到相同的方法
  3. 而是添加一个新方法,如:

    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');
    

答案 2 :(得分: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')}}'

希望这有帮助