Mam tabelę users
i relację jeden-do-zero/jeden z tabelą businesses
(users.user_id => firmy.user_id). Na moim stole users
mam dyskryminatora, który mówi mi, jeśli użytkownik jest typu firmy, a więc muszę mieć również szczegóły na tabeli businesses
.Jak przekazywać argumenty do fabryk Laravel?
Chcę utworzyć moich użytkowników z moją fabryką, która aktualnie działa, a następnie tworzę tylko dane firmy, w których dyskryminator wskazuje na konto firmowe.
Mam trzy opcje w moim umyśle:
- stworzyć z fabryki użytkowników, a następnie za pomocą „-> each()” zrobić kilka kontroli dyskryminatora i utworzyć nowego użytkownika biznesowych przy użyciu fabryki. Jednak nie mogę przekazać do fabryki firmy
user_id
, do której został przypisany użytkownik. - Najpierw utwórz użytkowników. Następnie w moim Business seederie wyszukuj wszystkich użytkowników, którzy pasują do dyskryminatora biznesowego. Następnie dla wszystkich tych użytkowników uruchomić fabrykę, która tworzy szczegóły biznesowe. Ale znowu, musiałbym połączyć jakoś
user_id
z już utworzonym użytkownikiem z fabryką biznesuuser_id
. - W mojej fabryce firmy utwórz nowego użytkownika i pobierz identyfikator, tworząc w ten sposób połączenie między
users.user_id
ibusiness.user_id
. Jednak używam generatora losowego dlauser.user_type
, więc nawet jeśli mam wypełniony tabelębusinesses
, może to być dla użytkowników, którzy mają dyskryminator jako "osobisty".
Czy istnieje inny sposób? Czy mogę przekazać argumenty z mojego Seedera do fabryki?
Jak mogłem to przegapić. Obserwowałem lekcję Laracasta i wiem, że pamiętam o ustawianiu rzeczy. Oczywiście było to również w dokumentacji: http://laravel.com/docs/master/testing#model-factories. Wielkie dzięki. – Cristian
@ Link Cristian wygląda obecnie nieaktualne, dla 5.4 zobacz https://laravel.com/docs/5.4/database-testing#using-factories i przewiń do "Persisting Models" – morph
co z tego? '' 'php $ student-> assignRole (" student "); '' ' im przy użyciu spatie/pozwolenie –