2016-05-25 132 views
1

不可能在一个空可变访问属性( “名称”)在 消息\ index.html.twig在管线11Symfony2的实体多对一

{{message.author.name}} - 正在

{{message.recipient.name}} - 是不,我不知道为什么一切都与笔者一样

TWIG:

Nadawca: {{ message.author.name }} {{ message.author.surname }} 
Odbiorca: {{ message.recipient.name }} {{ message.recipient.surname }} 

控制器:

​​

实体用户:

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string", length=100) 
*/ 
private $name; 

/** 
* @ORM\Column(type="string", length=100) 
*/ 
private $surname; 

/** 
* @ORM\OneToMany(targetEntity="Articles", mappedBy="author") 
*/ 
private $articles; 

/** 
* @ORM\OneToMany(targetEntity="Messages", mappedBy="author") 
*/ 
private $messages_author; 

/** 
* @ORM\OneToMany(targetEntity="Messages", mappedBy="recipient") 
*/ 
private $messages_recipient; 


public function __construct() 
{ 
    parent::__construct(); 
    $this->messages_recipient = new ArrayCollection(); 
    $this->messages_author = new ArrayCollection(); 
    $this->articles = new ArrayCollection(); 
} 

实体消息:

 /** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string", length=100) 
*/ 
private $title; 

/** 
* @ORM\Column(type="text", length=16777216) 
*/ 
private $text; 

/** 
* @ORM\Column(type="integer", options={"default" = 1}) 
*/ 
private $published; 

/** 
* @ORM\Column(name="date", type="datetime") 
*/ 
private $date; 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="messages_author") 
* @ORM\JoinColumn(name="author_id", referencedColumnName="id") 
*/ 
private $author; 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="messages_recipient") 
* @ORM\JoinColumn(name="recipient_id", referencedColumnName="id") 
*/ 
private $recipient; 


public function __construct() 
{ 
    $this->date = new \DateTime("now"); 

} 
+0

尝试在你的树枝模板中做一个“{{dump(message)}}”。 – Letsrocks

回答

0

你的错误就意味着没有收件人存在于一个或多个消息。检查您从数据库中检索的所有邮件,并检查它们中是否有收件人为NULL。或用简单的SELECT * FROM message WHERE recipient_id IS NULL快速查询数据库。

这是由于延迟加载。起初Message实体中的authorrecipient都是空的或Proxy对象。只要该属性被访问,doctrine将尝试将关联的用户实体加载到消息中。因此,当您拨打​​并且您的message.recipient实际上没有返回用户实体时,它将保持为NULL,从而导致出现错误,指出无法在NULL上访问属性name

+0

呃其中一条消息没有作者ID,但是代之以代码... –

+0

@PawełSuchodolski所以我认为你得到它的工作:)这很好,很高兴我可以帮忙。 –

+0

是的,我忘了1插入的文章没有author_id O_o –