PluginProbe ʕ •ᴥ•ʔ
Kubio AI Page Builder / 2.8.6
Kubio AI Page Builder v2.8.6
2.9.0 2.8.6 2.8.5 2.8.4 2.8.3 2.8.2 2.8.1 trunk 1.0.0 1.0.1 1.1.0 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.9.0 2.0.0 2.1.1 2.1.2 2.1.3 2.2.0 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.3 2.3.4 2.4.0 2.4.1 2.4.2 2.4.3 2.4.5 2.5.0 2.5.1 2.5.2 2.5.3 2.6.0 2.6.1 2.6.2 2.6.3 2.6.5 2.6.6 2.6.7 2.7.0 2.7.1 2.7.2 2.7.3 2.8.0
kubio / vendor / fzaninotto / faker / src / Faker / ORM / Propel2 / Populator.php
kubio / vendor / fzaninotto / faker / src / Faker / ORM / Propel2 Last commit date
ColumnTypeGuesser.php 1 year ago EntityPopulator.php 1 year ago Populator.php 1 year ago
Populator.php
93 lines
1 <?php
2
3 namespace Faker\ORM\Propel2;
4
5 use Propel\Runtime\Propel;
6 use Propel\Runtime\ServiceContainer\ServiceContainerInterface;
7
8 /**
9 * Service class for populating a database using the Propel ORM.
10 * A Populator can populate several tables using ActiveRecord classes.
11 */
12 class Populator
13 {
14 protected $generator;
15 protected $entities = array();
16 protected $quantities = array();
17
18 /**
19 * @param \Faker\Generator $generator
20 */
21 public function __construct(\Faker\Generator $generator)
22 {
23 $this->generator = $generator;
24 }
25
26 /**
27 * Add an order for the generation of $number records for $entity.
28 *
29 * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel2\EntityPopulator instance
30 * @param int $number The number of entities to populate
31 */
32 public function addEntity($entity, $number, $customColumnFormatters = array(), $customModifiers = array())
33 {
34 if (!$entity instanceof \Faker\ORM\Propel2\EntityPopulator) {
35 $entity = new \Faker\ORM\Propel2\EntityPopulator($entity);
36 }
37 $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator));
38 if ($customColumnFormatters) {
39 $entity->mergeColumnFormattersWith($customColumnFormatters);
40 }
41 $entity->setModifiers($entity->guessModifiers($this->generator));
42 if ($customModifiers) {
43 $entity->mergeModifiersWith($customModifiers);
44 }
45 $class = $entity->getClass();
46 $this->entities[$class] = $entity;
47 $this->quantities[$class] = $number;
48 }
49
50 /**
51 * Populate the database using all the Entity classes previously added.
52 *
53 * @param PropelPDO $con A Propel connection object
54 *
55 * @return array A list of the inserted PKs
56 */
57 public function execute($con = null)
58 {
59 if (null === $con) {
60 $con = $this->getConnection();
61 }
62 $isInstancePoolingEnabled = Propel::isInstancePoolingEnabled();
63 Propel::disableInstancePooling();
64 $insertedEntities = array();
65 $con->beginTransaction();
66 foreach ($this->quantities as $class => $number) {
67 for ($i=0; $i < $number; $i++) {
68 $insertedEntities[$class][]= $this->entities[$class]->execute($con, $insertedEntities);
69 }
70 }
71 $con->commit();
72 if ($isInstancePoolingEnabled) {
73 Propel::enableInstancePooling();
74 }
75
76 return $insertedEntities;
77 }
78
79 protected function getConnection()
80 {
81 // use the first connection available
82 $class = key($this->entities);
83
84 if (!$class) {
85 throw new \RuntimeException('No class found from entities. Did you add entities to the Populator ?');
86 }
87
88 $peer = $class::TABLE_MAP;
89
90 return Propel::getConnection($peer::DATABASE_NAME, ServiceContainerInterface::CONNECTION_WRITE);
91 }
92 }
93