错误:在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;
答案 0 :(得分:0)
只需删除博客课程中的array
即可。仔细看看这部分
/**
* @ORM\OneToMany(targetEntity="Comment",mappedBy="blog")
*/
protected $comments;
希望它会帮助别人