数据库关系 - Laravel

时间:2017-10-14 13:42:02

标签: php mysql database laravel

我在将数据插入数据库表时遇到问题。我users tableschool tableregion table有一对多的关系。也就是说,users tableforeign keys school and region tables

我已经正确地创建了关系但是当我尝试将值插入数据库时​​,我得到了错误。

PS :我已经通过RegisterController保存了用户表中的一个用户(admins)(准确插入了school_id和region_id)。现在,当我用已经保存的用户(admin)登录时,我想通过UserController保存其他用户但是我得到上面的错误。

我做得不对?我只是一个有数据库关系和laravel的初学者

General error: 1364 Field 'school_id' and `region_id`doesn't have a default value 

表示该字段不能为空。

UserController中

 public function store(UserFormRequest $request)
    {
        $user = new User(array(
             'name' => $request->get('name'),
             'email' => $request->get('email'),
             'password'=> $request->get('password'),
             'phone' => $request->get('phone')           

              ));
        $user->save();

    }

2 个答案:

答案 0 :(得分:1)

MySQL告诉你这些字段不能为空,因为它们不可为空。

要在用户迁移中设置这些字段nullable()

// Your create users table migration
$table->integer('school_id')->nullable();
$table->integer('region_id')->nullable();

(您可以为这些添加任何其他属性 - 例如index()unsigned()或外键等。)

答案 1 :(得分:1)

您的问题有三种解决方案。

1

 public function store(UserFormRequest $request)
    {
        $user = new User(array(
             'name' => $request->get('name'),
             'email' => $request->get('email'),
             'password'=> $request->get('password'),
             'phone' => $request->get('phone'),
             'school_id'=>'you must pass value here',
             'region_id'=>'you must pass value here'        

              ));
        $user->save();

    }

2转到phpmyadmin使你的school_id,region_id默认值为NULL。所以你很高兴。