mirror of
https://github.com/fzaninotto/Faker.git
synced 2025-03-19 06:49:50 +01:00
Add Propel ColumTypeGuesser
This commit is contained in:
parent
3ab8593d6e
commit
c17355ea2e
69
src/Faker/ORM/Propel/ColumnTypeGuesser.php
Normal file
69
src/Faker/ORM/Propel/ColumnTypeGuesser.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace Faker\ORM\Propel;
|
||||
|
||||
use \PropelColumnTypes;
|
||||
|
||||
class ColumnTypeGuesser
|
||||
{
|
||||
protected $generator;
|
||||
|
||||
public function __construct(\Faker\Generator $generator)
|
||||
{
|
||||
$this->generator = $generator;
|
||||
}
|
||||
|
||||
public function guessFormat($column)
|
||||
{
|
||||
$generator = $this->generator;
|
||||
if ($column->isTemporal()) {
|
||||
if ($column->isEpochTemporal()) {
|
||||
return function() use ($generator) { return $generator->dateTime; };
|
||||
} else {
|
||||
return function() use ($generator) { return $generator->dateTimeAD; };
|
||||
}
|
||||
}
|
||||
$type = $column->getType();
|
||||
switch ($type) {
|
||||
case PropelColumnTypes::BOOLEAN:
|
||||
case PropelColumnTypes::BOOLEAN_EMU:
|
||||
return function() use ($generator) { return $generator->boolean; };
|
||||
case PropelColumnTypes::NUMERIC:
|
||||
case PropelColumnTypes::DECIMAL:
|
||||
$size = $column->getSize();
|
||||
return function() use ($generator, $size) { return $generator->randomNumber($size * 100) / 100; };
|
||||
case PropelColumnTypes::TINYINT:
|
||||
return function() { return mt_rand(0,255); };
|
||||
case PropelColumnTypes::SMALLINT:
|
||||
return function() { return mt_rand(0,65535); };
|
||||
case PropelColumnTypes::INTEGER:
|
||||
return function() { return mt_rand(0,4294967295); };
|
||||
case PropelColumnTypes::BIGINT:
|
||||
return function() { return mt_rand(0,18446744073709551615); };
|
||||
case PropelColumnTypes::FLOAT:
|
||||
return function() { return mt_rand(0,4294967295)/mt_rand(0,4294967295); };
|
||||
case PropelColumnTypes::DOUBLE:
|
||||
case PropelColumnTypes::REAL:
|
||||
return function() { return mt_rand(0,18446744073709551615)/mt_rand(0,18446744073709551615); };
|
||||
case PropelColumnTypes::CHAR:
|
||||
case PropelColumnTypes::VARCHAR:
|
||||
case PropelColumnTypes::BINARY:
|
||||
case PropelColumnTypes::VARBINARY:
|
||||
$size = $column->getSize();
|
||||
return function() use ($generator, $size) { return $generator->text($size); };
|
||||
case PropelColumnTypes::LONGVARCHAR:
|
||||
case PropelColumnTypes::LONGVARBINARY:
|
||||
case PropelColumnTypes::CLOB:
|
||||
case PropelColumnTypes::CLOB_EMU:
|
||||
case PropelColumnTypes::BLOB:
|
||||
return function() use ($generator) { return $generator->text; };
|
||||
case PropelColumnTypes::ENUM:
|
||||
$valueSet = $column->getValueSet();
|
||||
return function() use ($generator, $valueSet) { return $generator->randomElement($valueSet); };
|
||||
case PropelColumnTypes::OBJECT:
|
||||
case PropelColumnTypes::PHP_ARRAY:
|
||||
// no smart way to guess what the user expects here
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
namespace Faker\ORM\Propel;
|
||||
|
||||
include __DIR__ . '/../../Guesser/Name.php';
|
||||
include __DIR__ . '/ColumnTypeGuesser.php';
|
||||
|
||||
/**
|
||||
* Service class for populating a table through a Propel ActiveRecord class.
|
||||
@ -49,6 +50,7 @@ class EntityPopulator
|
||||
$peerClass = $class::PEER;
|
||||
$tableMap = $peerClass::getTableMap();
|
||||
$nameGuesser = new \Faker\Guesser\Name($generator);
|
||||
$columnTypeGuesser = new \Faker\ORM\Propel\ColumnTypeGuesser($generator);
|
||||
foreach ($tableMap->getColumns() as $columnMap) {
|
||||
if ($columnMap->isForeignKey()) {
|
||||
$relatedClass = $columnMap->getRelation()->getForeignTable()->getPhpName();
|
||||
@ -62,7 +64,10 @@ class EntityPopulator
|
||||
$formatters[$columnMap->getPhpName()] = $formatter;
|
||||
continue;
|
||||
}
|
||||
// TODO: PropelColumnTypeGuesser
|
||||
if ($formatter = $columnTypeGuesser->guessFormat($columnMap)) {
|
||||
$formatters[$columnMap->getPhpName()] = $formatter;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return $formatters;
|
||||
}
|
||||
|
@ -20,6 +20,18 @@ class Base
|
||||
{
|
||||
return mt_rand(0, 9);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a random number with 0 to $nbDigits digits
|
||||
*
|
||||
* @param integer $nbDigits
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
protected static function randomNumber($nbDigits = 3)
|
||||
{
|
||||
return mt_rand(0, $nbDigits * 10);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a random letter from a to z
|
||||
|
Loading…
x
Reference in New Issue
Block a user