PluginProbe ʕ •ᴥ•ʔ
Kubio AI Page Builder / trunk
Kubio AI Page Builder vtrunk
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 / Propel / Populator.php
kubio / vendor / fzaninotto / faker / src / Faker / ORM / Propel Last commit date
ColumnTypeGuesser.php 1 year ago EntityPopulator.php 1 year ago Populator.php 1 year ago
Populator.php
90 lines
1 <?php
2
3 namespace Faker\ORM\Propel;
4
5 /**
6 * Service class for populating a database using the Propel ORM.
7 * A Populator can populate several tables using ActiveRecord classes.
8 */
9 class Populator
10 {
11 protected $generator;
12 protected $entities = array();
13 protected $quantities = array();
14
15 /**
16 * @param \Faker\Generator $generator
17 */
18 public function __construct(\Faker\Generator $generator)
19 {
20 $this->generator = $generator;
21 }
22
23 /**
24 * Add an order for the generation of $number records for $entity.
25 *
26 * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance
27 * @param int $number The number of entities to populate
28 */
29 public function addEntity($entity, $number, $customColumnFormatters = array(), $customModifiers = array())
30 {
31 if (!$entity instanceof \Faker\ORM\Propel\EntityPopulator) {
32 $entity = new \Faker\ORM\Propel\EntityPopulator($entity);
33 }
34 $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator));
35 if ($customColumnFormatters) {
36 $entity->mergeColumnFormattersWith($customColumnFormatters);
37 }
38 $entity->setModifiers($entity->guessModifiers($this->generator));
39 if ($customModifiers) {
40 $entity->mergeModifiersWith($customModifiers);
41 }
42 $class = $entity->getClass();
43 $this->entities[$class] = $entity;
44 $this->quantities[$class] = $number;
45 }
46
47 /**
48 * Populate the database using all the Entity classes previously added.
49 *
50 * @param PropelPDO $con A Propel connection object
51 *
52 * @return array A list of the inserted PKs
53 */
54 public function execute($con = null)
55 {
56 if (null === $con) {
57 $con = $this->getConnection();
58 }
59 $isInstancePoolingEnabled = \Propel::isInstancePoolingEnabled();
60 \Propel::disableInstancePooling();
61 $insertedEntities = array();
62 $con->beginTransaction();
63 foreach ($this->quantities as $class => $number) {
64 for ($i=0; $i < $number; $i++) {
65 $insertedEntities[$class][]= $this->entities[$class]->execute($con, $insertedEntities);
66 }
67 }
68 $con->commit();
69 if ($isInstancePoolingEnabled) {
70 \Propel::enableInstancePooling();
71 }
72
73 return $insertedEntities;
74 }
75
76 protected function getConnection()
77 {
78 // use the first connection available
79 $class = key($this->entities);
80
81 if (!$class) {
82 throw new \RuntimeException('No class found from entities. Did you add entities to the Populator ?');
83 }
84
85 $peer = $class::PEER;
86
87 return \Propel::getConnection($peer::DATABASE_NAME, \Propel::CONNECTION_WRITE);
88 }
89 }
90