2015-09-03 84 views
8

我有一個users表和與businesses表(users.user_id => business.user_id)一對一/一個關係。在我的users表中,我有一個鑑別器,告訴我用戶是否屬於業務類型,因此我需要詳細瞭解businesses表。如何將參數傳遞給Laravel工廠?

我想創建我的用戶與我的工廠,目前正在工作,然後只創建鑑別指向一個商業帳戶的業務細節。

我在我的腦海三個選項:

  1. 來自用戶的工廠創建,然後使用「 - >每()」做鑑別一些檢查,並使用一張工廠新的商業用戶。但是,我無法將用戶分配給業務工廠的user_id
  2. 首先創建用戶。然後在我的商業播種器中,檢索與「商業」鑑別器匹配的所有用戶。然後爲所有這些用戶運行一個創建業務詳細信息的工廠。但是,我必須以某種方式將已創建用戶的user_id與商業工廠user_id鏈接。
  3. 在我的業務工廠中,創建一個新用戶並檢索該ID,從而建立users.user_idbusiness.user_id之間的鏈接。不過,我使用的隨機數發生器爲user.user_type,所以即使我填充了businesses表,它也可能適用於將鑑別符設置爲「個人」的用戶。

還有別的辦法嗎?我可以將我的Seeder的論點傳給工廠嗎?

回答

30

傳遞給create函數的屬性將作爲第二個參數傳遞到模型定義回調函數中。


在你的情況,你甚至都不需要訪問這些屬性,因爲它們會自動合併:

$business = factory(App\Business::class)->create(); 

factory(App\User::class, 5)->create([ 
    'business_id' => $business->id, 
]); 

適應這個您的需求。

+0

我怎麼可能錯過了。我看了Laracast課,我知道記得自己設置東西。當然,它也在文檔中:http://laravel.com/docs/master/testing#model-factories。非常感謝。 – Cristian

+0

@ Cristian的鏈接現在看起來已經過時了,對於5.4,請參閱https://laravel.com/docs/5.4/database-testing#using-factories並向下​​滾動到'Persisting Models' – morph

+0

這是怎麼回事? ''php $ student-> assignRole('student'); ''' 即時通訊使用spatie /權限 –

相關問題