我在尝试使用 laravel 将 user_id 链接到另一个表时遇到问题。我正在使用迁移,但似乎找不到我做错了什么。我不断收到错误..
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child
row: a foreign key constraint fails (`ship`.`units`, CONSTRAINT
`units_user_id_foreign` FOREIGN KEY(`user_id`) REFERENCES `users` (`id`))
SQL: INSERT INTO `units` (`unit`, `updated_at`, `created_at`) VALUES (?, ?, ?)
Bindings: array (
0 => 'i987',
1 => '2012-11-27 19:19:42',
2 => '2012-11-27 19:19:42',
)
这是我的迁移..
Schema::create('users', function($table) {
$table->increments('id');
$table->string('email');
$table->string('unit');
$table->string('password');
$table->timestamps();
});
Schema::create('units', function($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('unit');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->timestamps();
});
我的用户模型...一个用户有一个单元
return $this->has_one('Unit');
我的单元模型...属于用户
return $this->belongs_to('User');
出于某种原因,每次我注册一个新用户时,它都会将单元表中的 user_id 默认为 0。当我创建一个新用户时,我希望单元表具有正确的 user_id,以便我可以将该用户和单元关联起来。你能看到我在这里做错了什么吗?
我的用户控制器...
User::create(array(
'email' => Input::get('email'),
'password' => Hash::make($password)
));
Unit::create(array(
'unit' => Input::get('unit');
));