2014-01-23 5 views
0

У меня есть переменная прут и его содержит:веточка доступа переменный массив объектов

object(Video\VideoBundle\Entity\Relacionado)[366] 
    protected 'video' => 
    object(Video\VideoBundle\Entity\Video)[339] 
     private 'id' => int 1 
    **protected 'categoria' => 
    object(Proxies\__CG__\Video\VideoBundle\Entity\Categoria)[397] 
     public '__initializer__' => 
     object(Closure)[388] 
     public '__cloner__' => 
     object(Closure)[389] 
     public '__isInitialized__' => boolean true 
     private 'id' (Video\VideoBundle\Entity\Categoria) => int 1** 

Я хочу, чтобы получить доступ к переменной идентификатор категории в веточке

Моего сучок файл:

<div class="Descripcion"> 
    <h1> {{ video.name }} ({{ video.duracion}} min) </h1> 

         {% for tag in tags %} 

          {{ dump(tag) }} 

         {% endfor %} 
    </div> 

и мой контролер:

$tagvideo = $em->getRepository('VideoBundle:Relacionado')->findCategoriaVideo($video->getId()); 

return $this->render('VideoBundle:Default:video.html.twig', array('video' => $video, 'relacionados' => $relacionados, 'categorias' => $categorias ,'tags' => $tagvideo)); 

и мой DQL запрос

public function findCategoriaVideo($idvideo) 
    { 
     $em = $this->getEntityManager(); 
     $dql = 'SELECT c,r FROM VideoBundle:Relacionado r INNER JOIN r.video c WHERE r.video = :id'; 
     $consulta = $em->createQuery($dql); 
     $consulta->setParameter('id',$idvideo); 
     return $consulta->getResult(); 

    } 

Я думаю, что я использую неправильно мои Ассоциация entyties:

/** 
* Relacionado 
* 
* @ORM\Table() 
* @ORM\Entity 
* @ORM\Entity(repositoryClass="Video\VideoBundle\Entity\RelacionadoRepository") 
*/ 

class Relacionado 
{ 
    /** 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity="Video\VideoBundle\Entity\Video") 
    */ 
    protected $video; 
    /** 
    * @ORM\Id 
    * @ORM\ManyToOne (targetEntity = "Video\VideoBundle\Entity\Categoria") 
    */ 
    protected $categoria; 


class Categoria 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * @ORM\OneToMany (targetEntity = "Video\VideoBundle\Entity\Relacionado", mappedBy = "Categoria") 
*/ 
    private $id; 

class Video 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 

    */ 
    private $id; 

В таблице Relacionado я соотносить видео категории, связанные с каждым видео,

но я не знаю, потому что результат Видео правильный, но Категория нет! :(

Я не могу сущность доступа Categoria потому, что его не отображается правильно:

protected 'categoria' => 
    object(Proxies\__CG__\Video\VideoBundle\Entity\Categoria)[397] 
+0

Какой объект вы сбросили? –

+0

Это поможет, если вы разместите контроллер, который вернет объект в файл twig и файл twig – Splendonia

+0

Victor я сбросил вкладку переменных ее переменную, которую я визуализирую. – luisbg

ответ

0

Я решил свою проблему! Проблема была советоваться:

public function findCategoriaVideo($idvideo) 
    { 
     $em = $this->getEntityManager(); 
     $dql = 'SELECT r,c FROM VideoBundle:Relacionado r JOIN r.categoria c WHERE r.video = :id'; 
     $consulta = $em->createQuery($dql); 
     $consulta->setParameter('id',$idvideo); 
     //$consulta->setMaxResults(8); 
     return $consulta->getResult(); 

    } 

и мой класс:

class Relacionado 
{ 

    /** 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity = "Video\VideoBundle\Entity\Categoria") 
    * @ORM\JoinColumn(name="categoria_id", referencedColumnName="id") 
    */ 
    protected $categoria; 

    /** 
    * @ORM\Id 
    * @ORM\ManyToOne (targetEntity = "Video\VideoBundle\Entity\Video") 
    * @ORM\JoinColumn(name="video_id", referencedColumnName="id") 
    **/ 
    protected $video; 


class Categoria 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * @ORM\ManyToOne(targetEntity="Video\VideoBundle\Entity\Relacionado") 
    * @ORM\JoinColumn(name="id", referencedColumnName="categoria_id") 
    * 
    */ 

йоту, что asossiantions Entitys я могу Acces мой объект CATEGORIA.

Большое спасибо за все

0

Если имя вашей веточке переменной является объект, то вы можете получить доступ к категории с помощью:

{{ entity.getCategory }} 
+0

Не могли бы вы просто использовать {{entity.categoria.id}}? – joe42

+0

{{entity.getCategory}} и {{entity.category}} означают то же самое в ветке, если вы используете стандартные шаблоны сущностей.joe42 корректно предполагает, что у вас есть функция getId. – Lighthart

0

не найдены :

{{ dump(tag.getCategoria) }} 

or 

tag.categoria.id 

любой нашел !!!

ContextErrorException: Notice: Undefined property: Video\VideoBundle\Entity\Relacionado::$Categoria in C:\wamp\www\video\src\Video\VideoBundle\Entity\Relacionado.php line 45 

, но я должен определить это свойство в моем Entity Relacionado

class Relacionado 
{ 
    /** 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity="Video\VideoBundle\Entity\Video") 
    */ 
    protected $video; 
    /** 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity="Video\VideoBundle\Entity\Categoria") 
    */ 
    protected $categoria; 

Я думаю, что проблема может быть в:

*protected 'categoria' => 
    object(Proxies\__CG__\Video\VideoBundle\Entity\Categoria)[397] 

Почему Proxies__CG__ ¿¿¿??

+0

Я думаю, что я использую свои плохие ассоциации сущностей: – luisbg

Смежные вопросы