2017-12-04 2 views
-1

Bitte helfen Sie mit diesem Render, ich dieses Problem habe, wenn ich die Vorlage Zweig in der Steuerung machen, Probleme mit Beziehungen ManyToManyVorlage Beziehung ManyToMany Symfony Lehre

Weder die Eigenschaft „nombre“ noch eine der Methoden " nombre() "," getnombre() "/" isnombre() "oder" __call() "existieren und haben öffentlichen Zugriff in der Klasse" Doctrine \ ORM \ PersistentCollection ".... Ich werde meine Entitäten und Controller, bitte helfen mich mit diesem:

<?php 

namespace AdminBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* Menu 
* 
* @ORM\Table(name="menu") 
* @ORM\Entity(repositoryClass="AdminBundle\Repository\MenuRepository") 
*/ 
class Menu 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var float 
    * @Assert\NotBlank() 
    * @Assert\Type(type="float") 
    * @ORM\Column(name="precio", type="float") 
    */ 
    private $precio; 

    /** 
    * @var \DateTime 
    * @Assert\Date() 
    * @Assert\NotBlank() 
    * @ORM\Column(name="fecha", type="date") 
    */ 
    private $fecha; 

    /** 
    * @var \DateTime 
    * @Assert\DateTime() 
    * @Assert\NotBlank() 
    * @ORM\Column(name="fechacomprar", type="datetime") 
    */ 
    private $fechacomprar; 


    /** 
    * @var \DateTime 
    * @Assert\DateTime() 
    * @Assert\NotBlank() 
    * @ORM\Column(name="fechavence", type="datetime") 
    */ 
    private $fechavence; 

    /** 
    * @var \Doctrine\Common\Collections\Collection 
    * 
    * @ORM\ManyToMany(targetEntity="Alimento", inversedBy="menu") 
    * @ORM\JoinTable(name="alimento_menu", 
    * joinColumns={ 
    *  @ORM\JoinColumn(name="menu_id", referencedColumnName="id") 
    * }, 
    * inverseJoinColumns={ 
    *  @ORM\JoinColumn(name="alimento_id", referencedColumnName="id") 
    * } 
    *) 
    */ 
    private $alimento; 

    /** 
    * Constructor 
    */ 
    public function __construct() 
    { 
     $this->alimento = new ArrayCollection(); 
    } 


    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set precio 
    * 
    * @param float $precio 
    * 
    * @return Menu 
    */ 
    public function setPrecio($precio) 
    { 
     $this->precio = $precio; 

     return $this; 
    } 

    /** 
    * Get precio 
    * 
    * @return float 
    */ 
    public function getPrecio() 
    { 
     return $this->precio; 
    } 

    /** 
    * Set fecha 
    * 
    * @param \DateTime $fecha 
    * 
    * @return Menu 
    */ 
    public function setFecha($fecha) 
    { 
     $this->fecha = $fecha; 

     return $this; 
    } 

    /** 
    * Get fecha 
    * 
    * @return \DateTime 
    */ 
    public function getFecha() 
    { 
     return $this->fecha; 
    } 

    /** 
    * Set fechacomprar 
    * 
    * @param \DateTime $fechacomprar 
    * 
    * @return Menu 
    */ 
    public function setFechacomprar($fechacomprar) 
    { 
     $this->fechacomprar = $fechacomprar; 

     return $this; 
    } 

    /** 
    * Get fechacomprar 
    * 
    * @return \DateTime 
    */ 
    public function getFechacomprar() 
    { 
     return $this->fechacomprar; 
    } 

    /** 
    * Set fechavence 
    * 
    * @param \DateTime $fechavence 
    * 
    * @return Menu 
    */ 
    public function setFechavence($fechavence) 
    { 
     $this->fechavence = $fechavence; 

     return $this; 
    } 

    /** 
    * Get fechavence 
    * 
    * @return \DateTime 
    */ 
    public function getFechavence() 
    { 
     return $this->fechavence; 
    } 


    /** 
    * Add alimento 
    * 
    * @param \AdminBundle\Entity\Alimento $alimento 
    * 
    * @return Menu 
    */ 
    public function addAlimento(Alimento $alimento) 
    { 
     $this->alimento[] = $alimento; 

     return $this; 
    } 

    /** 
    * Remove alimento 
    * 
    * @param \AdminBundle\Entity\Alimento $alimento 
    */ 
    public function removeAlimento(Alimento $alimento) 
    { 
     $this->alimento->removeElement($alimento); 
    } 

    /** 
    * Get alimento 
    * 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getAlimento() 
    { 
     return $this->alimento; 
    } 
} 


<?php 

namespace AdminBundle\Entity; 

use Doctrine\Common\Collections\ArrayCollection; 
use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Bridge\Doctrine\Validator\Constraints as DoctrineAssert; 


/** 
* Alimento 
* 
* @ORM\Table(name="alimento") 
* @ORM\Entity(repositoryClass="AdminBundle\Repository\AlimentoRepository") 
* @DoctrineAssert\UniqueEntity("nombre") 
*/ 
class Alimento 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * @Assert\NotBlank(message="Debe escribir un alimento") 
    * @Assert\Type(type="string") 
    * @Assert\Regex(pattern="/\d/", match=false, message="Debe escribir un nombre válido") 
    * @ORM\Column(name="nombre", type="string", length=255, unique=true) 
    */ 
    private $nombre; 

    /** 
    * @var float 
    * @Assert\NotBlank(message="Debe especificar un precio") 
    * @Assert\Type(type="float", message="Debe escribir un precio válido") 
    * @ORM\Column(name="precio", type="float") 
    */ 
    private $precio; 


    /** 
    * @ORM\ManyToOne(targetEntity="TipoAlimento") 
    * @Assert\NotBlank() 
    */ 
    private $tipo; 

    /** 
    * @var \Doctrine\Common\Collections\Collection 
    * 
    * @ORM\ManyToMany(targetEntity="Menu", mappedBy="alimento") 
    */ 
    private $menu; 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set nombre 
    * 
    * @param string $nombre 
    * 
    * @return Alimento 
    */ 
    public function setNombre($nombre) 
    { 
     $this->nombre = $nombre; 

     return $this; 
    } 

    /** 
    * Get nombre 
    * 
    * @return string 
    */ 
    public function getNombre() 
    { 
     return $this->nombre; 
    } 

    /** 
    * Set precio 
    * 
    * @param float $precio 
    * 
    * @return Alimento 
    */ 
    public function setPrecio($precio) 
    { 
     $this->precio = $precio; 

     return $this; 
    } 

    /** 
    * Get precio 
    * 
    * @return float 
    */ 
    public function getPrecio() 
    { 
     return $this->precio; 
    } 

    /** 
    * Set tipo 
    * 
    * @param \AdminBundle\Entity\TipoAlimento $tipo 
    * 
    * @return Alimento 
    */ 
    public function setTipo(TipoAlimento $tipo) 
    { 
     $this->tipo = $tipo; 

     return $this; 
    } 

    /** 
    * Get tipo 
    * 
    * @return \AdminBundle\Entity\TipoAlimento 
    */ 
    public function getTipo() 
    { 
     return $this->tipo; 
    } 

    /** 
    * @return string 
    */ 
    function __toString() 
    { 
     return $this->getNombre(); 
    } 

    /** 
    * Constructor 
    */ 
    public function __construct() 
    { 
     $this->menu = new ArrayCollection(); 
    } 

    /** 
    * Add menu 
    * 
    * @param \AdminBundle\Entity\Menu $menu 
    * 
    * @return Alimento 
    */ 
    public function addMenu(Menu $menu) 
    { 
     $this->menu[] = $menu; 

     return $this; 
    } 

    /** 
    * Remove menu 
    * 
    * @param \AdminBundle\Entity\Menu $menu 
    */ 
    public function removeMenu(Menu $menu) 
    { 
     $this->menu->removeElement($menu); 
    } 

    /** 
    * Get menu 
    * 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getMenu() 
    { 
     return $this->menu; 
    } 
} 

Der Controller:

Und in der Vorlage ich so die Dinge tue:

{% for m in menu %} 
        <tr> 
         <td>{{ m.id }}</td> 
         <td>{{ m.fecha | date('d/m/y') }}</td> 
         <td>{{ m.alimento.nombre }}</td> 
         <td>{{ m.fechacomprar | date('d/m/y') }}</td> 
         <td>{{ m.fechavence | date('d/m/y') }}</td> 
         <td>{{ m.precio }}</td> 
        </tr> 
       {% endfor %} 

Problem hier ist m.alimento.nombre ist falsch!

+2

m.alimento ist eine Sammlung. Versuchen Sie {% für alimento in m.alimento%} {{alimento.nombre}} {% endfor%} –

+1

zeigen Sie Ihre Fehlermeldung an. – habibun

Antwort

1

einfach können Sie dies versuchen, in diesem Fall wird m.alimento Alimento der __toString

{{ m.alimento|join(',') }} 
1

zurück, wenn es eine viele zu viele ist das bedeutet, dass jedes Menü viele alimentos haben, so dass Sie eine Schleife über jeweils von ihnen.

{% for a in m.alimento %} 
<td>{{ a.nombre }}</td> 
{% endfor %} 
+0

Owww, ich kann das nicht glauben, ich habe dieses Problem zwei Tage, und jetzt ist behoben, danke, wirklich, danke! ..... dieses Netz ist das beste! –

+0

Gern geschehen – Carlos

Verwandte Themen