/** * @param string $field * @param integer $type * @param bool|array $multiple * @param array $options * @param Builder $builder */ private function addFieldOfType($field, $type, $multiple, array $options, Builder $builder) { switch ($type) { case Field::TYPE_FAKE: $builder->fake($field, $options[0], isset($options[1]) ? $options[1] : []); break; case Field::TYPE_LINK: $builder->link($field, $options[0]); break; case Field::TYPE_RELATION: $builder->relation($field, $options[0]); break; case Field::TYPE_VALUE: $builder->value($field, $options[0]); break; case Field::TYPE_CALLBACK: $builder->callback($field, $options[0]); break; case Field::TYPE_NONE: $builder->none($field); break; case Field::TYPE_SELECT: $builder->select($field, $options[0]); break; } if (false === $multiple) { $builder->single($field); } else { $builder->multiple($field, $multiple[0], $multiple[1]); } }
private function makeField(array $mapping, Builder $builder) { $field = $mapping['fieldName']; switch ($mapping['type']) { case 'string': $length = isset($mapping['length']) && is_int($mapping['length']) ? $mapping['length'] : 255; $builder->fake($field, 'text', [$length]); break; case 'integer': case 'bigint': $builder->fake($field, 'randomNumber'); break; case 'smallint': $builder->fake($field, 'numberBetween', [0, 65535]); break; case 'boolean': $builder->fake($field, 'boolean'); break; case 'decimal': $precision = isset($mapping['precision']) ? $mapping['precision'] : 2; $builder->callback($field, function ($data, Dogmatist $dogmatist) use($precision) { return $dogmatist->getFaker()->randomNumber($precision + 2) / 100; }); break; case 'date': case 'time': case 'datetime': $builder->fake($field, 'datetime'); break; case 'datetimetz': $builder->callback($field, function ($data, Dogmatist $dogmatist) { $date = $dogmatist->getFaker()->dateTime; $tz = $dogmatist->getFaker()->timezone; return $date->setTimezone(new \DateTimeZone($tz)); }); break; case 'text': $builder->fake($field, 'text'); break; case 'float': $builder->fake($field, 'randomFloat'); break; case 'guid': $builder->fake($field, 'uuid'); break; } }