Bonjour,
voilà j'aimerais comprendre pourquoi l'un de mes attributs qui est de type ArrayCollection n'est pas considéré comme un array() ?
en fait je voudrais à la base, faire un clone d'un resultat de query_builder. j'ai une entité "application" qui possède un attribut "docs" qui est en relation OnetoMany et de type arrayCollection :
mais lorsque j'essaie d'implémenter la méthode __clone(), cela ne fonctionne pas, à la place s'affiche le resultat de la boucle else.
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 <?php namespace yiBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * Application * * @ORM\Table() * @ORM\Entity(repositoryClass="yiBundle\Entity\ApplicationRepository") */ class Application { /** * @var ArrayCollection * * @ORM\OneToMany(targetEntity="yiBundle\Entity\DocApplication", mappedBy="application",cascade={"persist"}) */ private $docs; /** * Add docs * * @param \yiBundle\Entity\DocApplication $docs * @return Application */ public function addDoc(\yiBundle\Entity\DocApplication $docs) { $this->docs[] = $docs; return $this; } /** * Remove docs * * @param \yiBundle\Entity\DocApplication $docs */ public function removeDoc(\yiBundle\Entity\DocApplication $docs) { $this->docs->removeElement($docs); } /** * Get docs * * @return ArrayCollection */ public function getDocs() { return $this->docs; } /** * Constructor */ public function __construct() { $this->docs = new ArrayCollection(); } function __clone() { echo dump($this->docs); $mClone = new ArrayCollection(); if (is_array($this->docs)){ foreach ($this->docs as $item) { $itemClone = clone $item; $itemClone->setA($this); $mClone->add($itemClone); } $this->docs = $mClone; } else{ echo 'not an array <br/>'; } } }
pourriez-vous m'expliquer pourquoi svp ? j'ai beau chercher partout je ne comprend pas...
merci
Partager