Создание фабрики Laravel для каждого не изолированного между вызовами одной и той же фабрики - PullRequest
0 голосов
/ 18 февраля 2019

Я бы подумал, что создание фабрики было изолированным, поэтому я мог бы сделать:

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"] 

Если вы сделаете это в разных начальных файлах, у него будет тот же результат, поэтомувстречается в файлах на основе используемой фабрики, а также локально.Кроме того, возникает при создании с использованием связанных состояний фабрики.

Есть ли способ изолировать добавление связей между вызовами одних и тех же фабрик без этого?Поэтому я могу создавать пользователей, у которых нет связанных моделей, а затем добавлять отношения только к нескольким конкретным моделям?

1 Ответ

0 голосов
/ 18 февраля 2019

Ответ - не использовать each при создании одной модели, поскольку он делегирует построителю, так как модель не имеет метода each.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...