2012-11-27 67 views
0

我遇到了一個問題,試圖使用laravel將user_id鏈接到另一個表。我正在使用遷移,似乎無法找到我做錯了什麼。我不斷收到錯誤..如何鏈接laravel中的兩個表?

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

出於某種原因,ev erytime我註冊一個新用戶,它默認單位表中的user_id爲0.當我創建一個新用戶時,我希望單位表具有正確的user_id,這樣我可以將該用戶和單位關聯起來。你能看到我在這裏做錯了什麼嗎?

我的用戶控制器...

User::create(array(
    'email' => Input::get('email'), 
    'password' => Hash::make($password) 
)); 

    Unit::create(array(
    'unit' => Input::get('unit'); 
)); 
+0

取出外國查詢$表 - >外國( 'USER_ID') - >的引用( 'ID') - >上( '用戶');並..錯誤消失,但單位表中的user_id仍然默認爲0 ... – coryj

回答

3

在遷移架構單位設置的外鍵

//Unit Schema Migration 
$table->integer('user_id'); 

//User Controller 
$unit = new Unit(array('unit' => Input::get('unit'))); 
$user = User::create(array(
         'email' => Input::get('email'), 
         'password'=>Hash::make($password) 
        )); 

$unit = $user->unit()->insert($unit); 
+0

真棒,感謝兄弟! – coryj