Symfony2实体多通

Symfony2实体多通,symfony,doctrine-orm,twig,entity,Symfony,Doctrine Orm,Twig,Entity,无法访问中空变量的属性名 第11行的messages\index.html.twig {{message.author.name}-正在工作 {{message.recipient.name}-is没有,我不知道为什么author的一切都是一样的 细枝: 控制器: public function indexAction() { $limit = 100; $em = $this->getDoctrine()->getManager(); $user_data

无法访问中空变量的属性名 第11行的messages\index.html.twig

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

{{message.recipient.name}-is没有,我不知道为什么author的一切都是一样的

细枝:

控制器:

public function indexAction() {
    $limit = 100;
    $em = $this->getDoctrine()->getManager();
    $user_data = $this->get('security.token_storage')->getToken()->getUser();
    $repository = $this->getDoctrine()->getRepository('AppBundle:Messages');
    $query = $repository->createQueryBuilder('m')->where('m.author = :authorid')
                                                 ->orWhere('m.recipient = :authorid')
                                                 ->setParameter('authorid', $user_data->getId())
                                                 ->getQuery();
    $messages = $query->getResult();
    return $this->render('messages/index.html.twig', array(
        'messages' => $messages,
        'user' => $user_data,
    ));
}
实体用户:

 /**
 * @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");

}

您的错误意味着一封或多封邮件中没有收件人。检查从数据库检索的所有邮件,并检查其中是否有收件人为空。或者使用简单的SELECT*FROM消息快速查询数据库,其中收件人id为空


这是由于延迟加载造成的。首先,消息实体中的作者和收件人都是空对象或代理对象。一旦访问属性,条令将尝试将关联的用户实体加载到消息中。因此,当您调用{message.recipient.name}并且您的message.recipient实际上没有返回用户实体时,它将保持NULL,从而导致一个错误,表明它无法访问NULL上的属性名。

您的错误将意味着一封或多封邮件中没有收件人。检查从数据库检索的所有邮件,并检查其中是否有收件人为空。或者使用简单的SELECT*FROM消息快速查询数据库,其中收件人id为空


这是由于延迟加载造成的。首先,消息实体中的作者和收件人都是空对象或代理对象。一旦访问属性,条令将尝试将关联的用户实体加载到消息中。因此,当您调用{{message.recipient.name}并且您的message.recipient实际上没有返回用户实体时,它将保持NULL,从而导致一个错误,表明它无法访问NULL上的属性名。

尝试在您的细枝模板中执行{dumpmessage}}。尝试执行{dumpmessage}在您的twig template.Ehh中,一条消息没有作者id,但为空。。。代码是ok@PaweSuchodolski所以我想你已经成功了:太好了,很高兴我能帮上忙。是的,我忘记了一篇插入的文章中没有作者id,一条消息没有作者id,而是空的。。。代码是ok@Pawe苏霍多尔斯基:我想你已经成功了:太好了,很高兴我能帮上忙。是的,我忘了插入的一篇文章中没有作者id
        /**
 * @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");

}