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 :

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/>';
        }
    }
}
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.
pourriez-vous m'expliquer pourquoi svp ? j'ai beau chercher partout je ne comprend pas...
merci