Laravelにテストケースを書き込もうとしています。私はhere 2つのモデル間の多対多の関係のためのダミーデータを作成する方法を発見しました。しかし、私はピボットテーブルに属性を追加する方法を見つけることができませんでした。ここでLaravelテスト:ピボットテーブルに属性を追加します。
例: 我々はモデルuser
とモデルcar
を持っています。各ユーザーは複数の自動車を運転することができ、各自動車は複数のユーザーによって運転することができ、各ユーザーが各自動車でどのくらいの車を運転したかを把握したい。
users
テーブル
id | name
1 | Bob
2 | Alice
cars
テーブル
id | name
1 | Red Car
2 | Blue Car
car2user
関係テーブル
id_user | id_car | miles
1 | 1 | 20
2 | 2 | 4
どのように私は、このようなテストケースを作成することができますか?私は
$user = factory(\App\User::class)->create(['name' => 'Bob'])->first();
$user->cars()->save(factory(\App\Car::class)->create(['name' => 'Red Car']));
を試してみました。しかし、これはエラーを発生させます:
General error: 1364 Field 'miles' doesn't have a default value
私はどこにも必須フィールドmiles
の値を指定しなかったので、私は、このエラーメッセージを受け入れます。しかし、私はその価値をどこで提供することができますか?
ああ今私は理解する! saveメソッドは、 'cars()'の関係で呼び出すので、私のEloquentクエリに使用するのと同じです!私はsaveメソッドがPHPUnitの特別なものだと思っていました。この全体の呼び出しは私にとってはブラックボックスでした。唯一の違いは、偽のモデルでEloquentメソッドを呼び出すことです。これはとても素敵です!ありがとうございました! – Adam