Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/04/2012, 08:00
Avatar de maycolalvarez
maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: Doctrine 2 accediendo a campos de una relacion mediante lazy load

no se como has implementado D2, porque éste mapea las entidades a clases autenticas PHP y el uso por ejemplo de una clase Articulo 1:n con Comentarios sería más u menos así:

Código PHP:
$em $doctrineEntityManager;//obtener el Entity Manager

$articulo $em->getReference('Articulo'1);

//obtener comentarios:

$comments $articulo->getComments(); 
clases:
Articulo:
Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace Entity;
  4.  
  5. use Gedmo\Mapping\Annotation as Gedmo;
  6. use \Doctrine\Common\Collections\ArrayCollection;
  7.  
  8. /**
  9.  * Articulo
  10.  *
  11.  *
  12.  *
  13.  * @Entity(repositoryClass="Repository\ArticleRepository")
  14.  * @Table(name="prueba.article")
  15.  * @author maycolalvarez
  16.  */
  17. class Articulo
  18. {
  19.     /**
  20.      * @Id
  21.      * @Column(type="integer", nullable=false)
  22.      * @GeneratedValue(strategy="AUTO")
  23.      */
  24.     protected $id;
  25.    
  26.     /**
  27.      *
  28.      * @Column(type="string", name="_name", length=100, nullable=false)
  29.      */
  30.     protected $name;
  31.    
  32.     /**
  33.      *
  34.      * @var type
  35.      * @Gedmo\Timestampable(on="create")
  36.      * @Column(type="datetime")
  37.      */
  38.     protected $created;
  39.    
  40.     /**
  41.      *
  42.      * @var type
  43.      * @Gedmo\Timestampable(on="update")
  44.      * @Column(type="datetime")
  45.      */
  46.     protected $updated;
  47.    
  48.     /**
  49.      * @OneToMany(targetEntity="Comentario", mappedBy="article")
  50.      */
  51.     private $comments;
  52.  
  53.     public function __construct()
  54.     {
  55.         $this->comments = new \Doctrine\Common\Collections\ArrayCollection();
  56.     }
  57.    
  58.     /**
  59.      * Get id
  60.      *
  61.      * @return integer
  62.      */
  63.     public function getId()
  64.     {
  65.         return $this->id;
  66.     }
  67.  
  68.     /**
  69.      * Set name
  70.      *
  71.      * @param string $name
  72.      */
  73.     public function setName($name)
  74.     {
  75.         $this->name = $name;
  76.     }
  77.  
  78.     /**
  79.      * Get name
  80.      *
  81.      * @return string
  82.      */
  83.     public function getName()
  84.     {
  85.         return $this->name;
  86.     }
  87.  
  88.     /**
  89.      * Set created
  90.      *
  91.      * @param datetime $created
  92.      */
  93.     public function setCreated($created)
  94.     {
  95.         $this->created = $created;
  96.     }
  97.  
  98.     /**
  99.      * Get created
  100.      *
  101.      * @return datetime
  102.      */
  103.     public function getCreated()
  104.     {
  105.         return $this->created;
  106.     }
  107.  
  108.     /**
  109.      * Set updated
  110.      *
  111.      * @param datetime $updated
  112.      */
  113.     public function setUpdated($updated)
  114.     {
  115.         $this->updated = $updated;
  116.     }
  117.  
  118.     /**
  119.      * Get updated
  120.      *
  121.      * @return datetime
  122.      */
  123.     public function getUpdated()
  124.     {
  125.         return $this->updated;
  126.     }
  127.  
  128.     /**
  129.      * Add comments
  130.      *
  131.      * @param Entity\Comentario $comments
  132.      */
  133.     public function addComentario(Entity\Comentario $comments)
  134.     {
  135.         $this->comments[] = $comments;
  136.     }
  137.  
  138.     /**
  139.      * Get comments
  140.      *
  141.      * @return Doctrine\Common\Collections\Collection
  142.      */
  143.     public function getComments()
  144.     {
  145.         return $this->comments;
  146.     }
  147. }
comentario:
Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace Entity;
  4.  
  5. use Gedmo\Mapping\Annotation as Gedmo;
  6. use \Doctrine\Common\Collections\ArrayCollection;
  7.  
  8. /**
  9.  * Comentario
  10.  *
  11.  *
  12.  * @Entity(repositoryClass="Repository\CommentRepository")
  13.  * @Table(name="prueba.comment")
  14.  * @author maycolalvarez
  15.  */
  16. class Comentario
  17. {
  18.     /**
  19.      * @Id
  20.      * @Column(type="integer", nullable=false)
  21.      * @GeneratedValue(strategy="AUTO")
  22.      */
  23.     protected $id;
  24.    
  25.     /**
  26.      *
  27.      * @Column(type="string", name="_name", length=100, nullable=false)
  28.      */
  29.     protected $name;
  30.    
  31.     /**
  32.      *
  33.      * @var type
  34.      * @Gedmo\Timestampable(on="create")
  35.      * @Column(type="datetime")
  36.      */
  37.     protected $created;
  38.    
  39.     /**
  40.      *
  41.      * @var type
  42.      * @Gedmo\Timestampable(on="update")
  43.      * @Column(type="datetime")
  44.      */
  45.     protected $updated;
  46.    
  47.      /**
  48.      * @ManyToOne(targetEntity="Articulo", inversedBy="comments")
  49.      * @JoinColumn(nullable=false)
  50.      *
  51.      */
  52.     private $article;
  53.  
  54.  
  55.     /**
  56.      * Get id
  57.      *
  58.      * @return integer
  59.      */
  60.     public function getId()
  61.     {
  62.         return $this->id;
  63.     }
  64.  
  65.     /**
  66.      * Set name
  67.      *
  68.      * @param string $name
  69.      */
  70.     public function setName($name)
  71.     {
  72.         $this->name = $name;
  73.     }
  74.  
  75.     /**
  76.      * Get name
  77.      *
  78.      * @return string
  79.      */
  80.     public function getName()
  81.     {
  82.         return $this->name;
  83.     }
  84.  
  85.     /**
  86.      * Set created
  87.      *
  88.      * @param datetime $created
  89.      */
  90.     public function setCreated($created)
  91.     {
  92.         $this->created = $created;
  93.     }
  94.  
  95.     /**
  96.      * Get created
  97.      *
  98.      * @return datetime
  99.      */
  100.     public function getCreated()
  101.     {
  102.         return $this->created;
  103.     }
  104.  
  105.     /**
  106.      * Set updated
  107.      *
  108.      * @param datetime $updated
  109.      */
  110.     public function setUpdated($updated)
  111.     {
  112.         $this->updated = $updated;
  113.     }
  114.  
  115.     /**
  116.      * Get updated
  117.      *
  118.      * @return datetime
  119.      */
  120.     public function getUpdated()
  121.     {
  122.         return $this->updated;
  123.     }
  124.  
  125.     /**
  126.      * Set article
  127.      *
  128.      * @param Entity\Articulo $article
  129.      */
  130.     public function setArticle(Entity\Articulo $article)
  131.     {
  132.         $this->article = $article;
  133.     }
  134.  
  135.     /**
  136.      * Get article
  137.      *
  138.      * @return Entity\Articulo
  139.      */
  140.     public function getArticle()
  141.     {
  142.         return $this->article;
  143.     }
  144. }
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 13/04/2012 a las 08:08