2017-01-13 9 views
0

私はLaravel 5.3 RESTful APIプロジェクトを継承していますが、それでも私の頭を抱いています。 usersテーブルでは、nameカラムを削除し、first_namelast_nameに置き換えました。しかし、これは既存のテストを壊してしまった。(FOUND)テスト時の工場出荷時のデフォルト値

私はphpunitを実行すると、私は次のエラーを参照してください。

Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1364 Field 'first_name' doesn't have a default value (SQL: insert into `users` (`name`, `email`, `password` ... 

を私はシーダー、工場出荷時のファイルとGoogleで検索しましたし、私はこれらの変更を反映するためのテストを更新する方法を見つけることができません。私が見ることができる唯一のヒントは、エラーがテストでこの行によって作成されていることです$user = factory(\App\Models\User::class)->create();。しかし、私はフィールドがテストのために設定されているのを見ることができません。

config/database.phpの編集とstrict=falseの設定をお勧めします。しかし、これはハックのように聞こえて、問題を解決していないようです。

いずれの方向も高く評価されます。

EDIT:Nevermind。私はファイルをかなり明白な場所に見つけました。 Database/factories/

答えて

0

データベースの列を削除したり、列を直接追加したりしないでください。私はそれを行うための移行を使用しました

php artisan make:migration drop_name_from_users_table

php artisan make:migration add_first_name_and_last_name_to_users_table

class DropNameFromUsersTable extends Migration 
{ 
    public function up() 
    { 
     Schema::table('users', function ($table) { 
      $table->dropColumn('name'); 
     }); 
    } 

    public function down() 
    { 
     Schema::table('users', function ($table) { 
      $table->string('name'); 
     }); 
    } 
} 

class AddFirstNameAndLastNameToUsersTable extends Migration 
{ 
    public function up() 
    { 
     Schema::table('users', function ($table) { 
      $table->string('first_name'); 
      $table->string('last_name'); 
     }); 
    } 

    public function down() 
    { 
     Schema::table('users', function ($table) { 
      $table->dropColumn('first_name'); 
      $table->dropColumn('last_name'); 
     }); 
    } 
} 
+0

: 次の2つの移行を作成する必要があります。私は1つのマイグレーションファイルを使用していましたが、2つではありませんが、違いはありません。 – Dubby

関連する問題