symfony2 LeftJoin的Doctrine查询错误:在非对象上调用成员函数add()

时间:2014-10-12 09:09:50

标签: symfony doctrine

错误:在E:\ xampp \ htdocs \ symfony \ vendor \ doctrine \ orm \ lib \ Doctrine \ ORM \ PersistentCollection.php第177行中的非对象上调用成员函数add()

请问leftjoin怎么写这句话是对的?

BlogRepoistory.php

public function getLatestBlogs($limit=null){
    $qb=$this->createQueryBuilder('blog')
        ->select('blog','c')
        ->leftJoin('blog.comments','c')
        ->orderBy('blog.created','DESC')
        ;
    if (false === is_null($limit))
        $qb->setMaxResults($limit);
    return $qb->getQuery()->getResult();
}

PageController.php

/**
 * @Route("/",name="homepage")
 * @Template()
 */
public function indexAction(){
    $em=$this->getDoctrine()->getManager();
    $blogs=$em->getRepository('BloggerBlogBundle:Blog')->getLatestBlogs();

    return array('blogs'=>$blogs);
}

评论实体:

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

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

/**
 * @ORM\Column(type="text")
 */
protected $comment;

/**
 * @ORM\Column(type="boolean")
 */
protected $approved;

/**
 * @ORM\ManyToOne(targetEntity="Blog",inversedBy="comments")
 * @ORM\JoinColumn(name="blog_id",referencedColumnName="id")
 */
protected $blog;

/**
 * @ORM\Column(type="datetime")
 */
protected $created;

/**
 * @ORM\Column(type="datetime")
 */
protected $updated;

BlogEntity:

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

/**
 * @ORM\Column(type="string")
 */
protected $title;

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

/**
 * @ORM\Column(type="text")
 */
protected $blog;

/**
 * @var
 * @ORM\Column(type="string",length=20)
 */
protected $image;

/**
 * @var
 * @ORM\Column(type="text")
 */
protected $tags;

/**
 * @ORM\OneToMany(targetEntity="Comment",mappedBy="blog")
 */
protected $comments = array();

/**
 * @var
 * @ORM\Column(type="datetime")
 */
protected $created;

/**
 * @var
 * @ORM\Column(type="datetime")
 */
protected $updated;

1 个答案:

答案 0 :(得分:0)

只需删除博客课程中的array即可。仔细看看这部分

/**
 * @ORM\OneToMany(targetEntity="Comment",mappedBy="blog")
 */
protected $comments;

希望它会帮助别人