我在将数据插入数据库表时遇到问题。我users table
与school table
和region table
有一对多的关系。也就是说,users table
有foreign 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();
}
答案 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。所以你很高兴。