2017-01-30 129 views
0

我想在我的projectController中使用一個外鍵,以獲得它所屬的域的名稱。但是,當我嘗試運行此命令時:php artisan db:seed --class = ProjectTableSeeder。我得到這個錯誤: 'domain_id'沒有默認值。字段沒有默認值||外鍵

任何想法請,它從何而來?

這是我的移民create_project_table:

public function up() 
{ 
    Schema::create('projects', function (Blueprint $table) { 
     $table->increments('id', true); 
     $table->string('title'); 
     $table->string('code');   
     $table->integer('domain_id')->nullable(); 
     $table->foreign('domain_id')->references('id')->on('domains'); 

     $table->timestamps(); 
    }); 
} 

Project_Controller:

public function create() 
{ 
    // 

    $arrondissements = Arrondissement::pluck('arrondissement', 'id'); 
    return view('pros.create', compact('arrondissements')); 
} 
+2

你能分享一下'ProjectTableSeeder'類的代碼嗎? –

+0

看起來你在添加'nullable()'約束之前運行了遷移...你可以通過新的遷移來添加約束,或者重新創建表格以及編輯過的遷移......注意:這種情況。 –

+0

@ArtenesNogueira我檢查了ProjectTableSeeder,我忘了添加domain_id。這樣就解決了這個問題。 謝謝。 – Naj

回答

0

錯誤消息'domain_id' doesn't have a default value建議,您運行

$ php artisan migrate 

之前已實際添加nullable()約束外鍵。請注意,大多數數據庫的nullable列的默認值爲NULL

爲了解決這個問題,我建議你要麼重新創建表格,也就是說,將所有表格全部刪除並重新運行migrate。這只是在你可以承受失去你的數據的情況下。

如果沒有,你可以創建另一個遷移,這通過增加nullable約束變更表。此外,您可能還必須更新您的數據。