/**
  * @param int $count
  * @param Video[] $videos
  * @param User[] $users
  * @param Repository $repo
  * @throws \Exception
  */
 protected function createComments($count, $videos, $users, Repository $repo)
 {
     $this->out->writeln(Comment::class);
     /** @var ProgressHelper $progress */
     $progress = $this->getHelperSet()->get('progress');
     $progress->start($this->out, count($videos) * $count);
     foreach ($videos as $video) {
         $comments = [];
         for ($i = 0; $i < $count; ++$i) {
             $comment = new Comment();
             $comment->author = $this->faker->randomElement($users);
             $comment->text = $this->faker->realText(100);
             $comment->inReplyTo = $this->faker->optional(0.25)->randomElement($comments);
             $video->comments->add($comment);
             $comments[] = $comment;
             $progress->advance();
         }
         $repo->persist($video);
     }
     $progress->finish();
 }
 private function createRubrics($count = 50)
 {
     print_r("Create rubrics. Count: " . $count . "...");
     $this->faker->unique(true);
     for ($i = 1; $i <= $count; $i++) {
         $rubric = new Rubric();
         $rubric->title = ucfirst($this->faker->word);
         if ($i === 1) {
             $parent_id = NULL;
         } else {
             do {
                 $parent_id = $this->faker->optional(0.7)->numberBetween(1, $i);
             } while ($parent_id === $i);
         }
         $rubric->parent_id = $parent_id;
         $rubric->save();
     }
     print_r("DONE" . PHP_EOL);
 }
 private function generateAttributes(FakerGenerator $faker, $attributes, $code, $scopeId)
 {
     foreach ($attributes as $attribute) {
         $attributeFaker = $faker;
         if (1 - $attribute->required > 0.001) {
             $attributeFaker = $faker->optional($attribute->required);
         }
         $value = $attributeFaker->format($attribute->generatorMethod, $attribute->generatorArguments);
         if ($value !== null) {
             if ($value instanceof \DateTime) {
                 $value = $value->format('Y-m-d H:i:s');
             }
             $valueKey = sprintf('%s-%s-%s', $code, $attribute->id, $scopeId);
             $this->batch['value'][$attribute->type][$valueKey] = ['entity_id' => null, 'attribute_id' => $attribute->id, 'scope_id' => $scopeId, 'value' => $value];
             $this->batch['value_index'][$code][] = [$attribute->type, $valueKey];
         }
     }
     return $this;
 }