Bonjour, j'ai un probleme pour peupler mes entités via Doctrine.
J'ai lu la documentation DoctrineFixturesBundle pour le partage d'entités, comme je veux en générer plusieurs d'un coup et je me sert de ArrayCollection en argument de la méthode addReference.
Le probleme apparait pour récupérer ces ArrayCollection avec la méthode getReference(). J'obtient l'erreur suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
[Doctrine\Common\Persistence\Mapping\MappingException] The class 'Doctrine\Common\Collections\ArrayCollection' was not found in the chain configured namespaces KOS\PlatformBundle\Entity
.. et je ne vois absolument pas ce que ça veut dire.
Si quelqu'un peut m'aider à trouver une solution je lui serait reconnaissant, merci d'avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
 
// src/KOS/PlatformBundle/DataFixtures/ORM/LoadAdvert.php
 
namespace KOS\PlatformBundle\DataFixtures\ORM;
 
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\Collections\ArrayCollection;
 
use KOS\PlatformBundle\Entity\Advert;
 
class LoadAdvert extends AbstractFixture implements OrderedFixtureInterface
{
  public function load(ObjectManager $manager)
  {
 
    $adverts = new ArrayCollection();;	  
    $titles = array('PHP developer', 'Symfony developer', 'C++ expert', 'Java junior', 'Photoshop web', 'Blender', 'Webdesigner');
 
    foreach ($titles as $title) {
 
		$ad = new Advert();
		$ad->setTitle($title);
		$ad->setAuthor("Pierre");
		$ad->setContent("orem ipsum dolor sit amet, consectetur adipiscing elit...");
 
		$manager->persist($ad);
		$adverts->add($ad);
    }
 
    $this->addReference("adverts", $adverts);
 
    $manager->flush();
  }
 
  public function getOrder()
  {
	  return 1;
  }
}
 
// src/KOS/PlatformBundle/DataFixtures/ORM/LoadSkill.php
 
namespace KOS\PlatformBundle\DataFixtures\ORM;
 
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\Collections\ArrayCollection;
 
use KOS\PlatformBundle\Entity\Skill;
 
class LoadSkill extends AbstractFixture implements OrderedFixtureInterface
{
  public function load(ObjectManager $manager)
  {
 
    $skills = new ArrayCollection();
 
    $names = array('PHP', 'Symfony', 'C++', 'Java', 'Photoshop', 'Blender', 'Bloc-note');
 
    foreach ($names as $name) {
 
      $skill = new Skill();
      $skill->setName($name);
 
      $manager->persist($skill);
      $skills->add($skill);
    }
 
    $this->addReference("skills", $skills);
 
    $manager->flush();
  }
 
  public function getOrder()
  {
	  return 2;
  }
}
 
// src/KOS/PlatformBundle/DataFixtures/ORM/LoadAdvertSkill.php
 
namespace KOS\PlatformBundle\DataFixtures\ORM;
 
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\Collections\ArrayCollection;
 
use KOS\PlatformBundle\Entity\AdvertSkill;
 
class LoadAdvertSkill extends AbstractFixture implements OrderedFixtureInterface
{
  public function load(ObjectManager $manager)
  {
 
	$adverts = $this->getReference("adverts")->toArray(); // .. génère une erreur
	$skills = $this->getReference("skills")->toArray();   // .. génère une erreur
 
	foreach($adverts as $ad)
	{
		$advertSkill = new AdvertSkill();
		$advertSkill->setLevel('expert');
		$advertSkill->setAdvert($ad);
 
		foreach($skills as $skill)
		{
		    $advertSkill->setSkill($skill);
		}
 
		$manager->persist($advertSkill);
	}
 
        $manager->flush();
  }
 
  public function getOrder()
  {
	  return 3;
  }
}