2015-09-03 20 views
8

users tablosum ve businesses tablosuyla bire bir/bir ilişki var (kullananlar. User_id => businesses.user_id). Benim users masamda, kullanıcının türden bir iş olup olmadığını söyleyen bir ayrımcı var ve bu yüzden businesses tablosunda da ayrıntılara sahip olmam gerekiyor.Argümanlar Laravel fabrikalarına nasıl geçilir?

Kullanıcılarımı şu anda çalışmakta olan fabrikamla oluşturmak ve ardından yalnızca ayrımcının bir ticari hesaba işaret ettiği iş ayrıntılarını oluşturmak istiyorum.

aklımda üç seçenek vardır:

  1. kullanarak daha sonra kullanıcıların fabrikadan oluşturun ve '-> Her()' discriminator adına çek yapmak ve bir fabrika kullanarak yeni iş kullanıcı oluşturun. Ancak, kullanıcının atandığı user_id iş fabrikasına geçemiyorum.
  2. İlk önce kullanıcıları oluşturun. Daha sonra İş ekim makinemde, bir 'işletme' ayrımcısıyla eşleşen tüm Kullanıcıları alın. Sonra tüm bu kullanıcılar için iş ayrıntılarını yaratan bir fabrika çalıştırın. Ama yine de, zaten oluşturulmuş kullanıcının user_id iş fabrikasına user_id iş fabrikasıyla bağlantı kurardım.
  3. İşletme işyerimde yeni bir Kullanıcı oluşturun ve kimliği alın, böylece users.user_id ve business.user_id arasındaki bağlantıyı yapın. Ancak user.user_type için rasgele bir jeneratör kullanıyorum, bu yüzden businesses tablosunu doldurmuş olsam bile, ayrımcıyı 'kişisel' olan kullanıcılar için olabilir.

Başka bir yolu var mı? Seçicilerimi fabrikamdan değiştirebilir miyim?

cevap

30

create işlevine ilettiğiniz öznitelikler, ikinci bağımsız değişken olarak model tanımına geri dönülür.

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

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

ihtiyaçlarınıza bu uyarlayın: bunlar otomatik olarak birleştirilir olacak beri durumda


hatta, bu özellikleri erişmeye gerek yoktur.

+0

Bunu nasıl bilebilirdim. Laracast dersini izledim ve kendimi ayarlamayı hatırlıyorum. Tabii ki dokümantasyonda da vardı: http://laravel.com/docs/master/testing#model-factories. Çok teşekkürler. – Cristian

+0

@ Cristian'ın linki artık eskimiş görünüyor, 5.4 için bkz. Https://laravel.com/docs/5.4/database-testing#using-factories ve 'Kalıcı Modeller' seçeneğine aşağı kaydırın – morph

+0

buna ne dersiniz? '' php $ student-> assignRole ('student'); '' ' spatie/izni kullanarak im –