2017-10-14 94 views
0

我試圖寫在Laravel測試用例。我發現here如何創建一個虛擬的許多數據,兩款車型之間的許多關係。但我找不到如何將數據添加到數據透視表。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值。但我可以在哪裏提供這個價值?

回答

1

可以傳遞額外樞軸屬性作爲第二個參數節省()方法。下面應該做的伎倆:

$user->cars()->save(factory(\App\Car::class)->create(['name' => 'Red Car']), ['miles' => 20]); 
+0

哦,現在我明白了! save方法與我用於我的雄辯查詢的方法相同,因爲我在關係'cars()'上調用它。我想保存方法是使用PHPUnit很特別,這整個電話是我的一個黑匣子..唯一的區別是,我稱之爲有假貨示範雄辯的方法。這太好了!謝謝! – Adam