Git Repository Public Repository

namibia

URLs

Copy to Clipboard
 
df0489e1eeeeab5a9bd44e1d84fce49924fe1bac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
namespace Fixture\Service;



/**
 * Data fixture utillity service to enable easy setup of test data.
 * @author andre.fourie
 */
class Fixture
{

	/**
	 * @var \Doctrine\ORM\EntityManager
	 */
	static protected $em;
	/**
	 * @var array
	 */
	static protected $references = array();


	/**
	 * Set Doctrine Entity Manager.
	 * @param \Doctrine\ORM\EntityManager $em
	 */
	static public function setEntityManager(\Doctrine\ORM\EntityManager $em)
	{
		self::$em = $em;
	}

	/**
	 * Add multiple entries.
	 * @param string $entityName
	 * @param array $stackData
	 */
	static protected function addStack($entityName, array $stackData)
	{
		foreach ($stackData as $key => $data)
		{
			$referenceName = !is_numeric($key)
				? $key
				: false;
			self::addEntry($entityName, $data, $referenceName);
		}
	}

	/**
	 * Add a single entry.
	 * @param string $entityName
	 * @param array $data
	 * @param string $referenceName
	 */
	static protected function addEntry($entityName, array $data, $referenceName = false)
	{
		$entity = new $entityName();
		$entity->fromArray($data);
		self::$em->persist($entity);
		self::$em->flush();
		if ($referenceName)
		{
			self::$references[$referenceName] = self::$em->getReference($entityName, $entity->id);
		}
	}

	/**
	 * Retrieve a reference.
	 * @param string $name
	 * @return object|null
	 */
	static protected function getReference($name)
	{
		self::$em->merge(self::$references[$name]);
		return self::$references[$name];
	}

}

Commits for namibiamodule/Fixture/src/Fixture/Service/Fixture.php

Diff revisions: vs.
Revision Author Commited Message
df0489 ... Mark Fri 14 Oct, 2016 10:01:00 +0000

initial commit