Я бы подумал, что создание фабрики было изолированным, поэтому я мог бы сделать:
factory(Ctow\User::class, 5)->each(function($user) {
// Add relations to 5 users created
});
factory(Ctow\User::class, 5)->each(function() {
// Add different relations to 5 different users created
// and not include the previously created users
// in the iteration
});
Но выполняя это в начальном порядке:
factory(Ctow\User::class)->create(['username' => 'test1@example.com']);
factory(Ctow\User::class)->create(['username' => 'test2@example.com']);
factory(Ctow\User::class)->create(['username' => 'test3@example.com']);
factory(Ctow\User::class)
->create(['username' => 'final@example.com'])
->each(function ($user) {
\Illuminate\Support\Facades\Log::info('USER', [$user->username]);
});
В результате получится результат посева, показанный ниже,но я бы подумал, что он будет включать только одну запись final@example.com
, а не предыдущих созданных пользователей:
// Actual Result
[2019-02-17 22:52:05] local.INFO: USER ["test1@example.com"]
[2019-02-17 22:52:05] local.INFO: USER ["test2@example.com"]
[2019-02-17 22:52:06] local.INFO: USER ["test3@example.com"]
[2019-02-17 22:52:06] local.INFO: USER ["final@example.com"]
// Expected Result
[2019-02-17 22:52:06] local.INFO: USER ["final@example.com"]
Если вы сделаете это в разных начальных файлах, у него будет тот же результат, поэтомувстречается в файлах на основе используемой фабрики, а также локально.Кроме того, возникает при создании с использованием связанных состояний фабрики.
Есть ли способ изолировать добавление связей между вызовами одних и тех же фабрик без этого?Поэтому я могу создавать пользователей, у которых нет связанных моделей, а затем добавлять отношения только к нескольким конкретным моделям?