2016-05-25 166 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 –