2016-09-06 41 views
0

我有一个运行在symfony2上的网站。空的左连接只在生产中

我有这样的DQL查询:

SELECT b, d, al, a 
FROM Bundle:Book b 
LEFT JOIN b.document d 
LEFT JOIN b.authorLinks al 
LEFT JOIN al.author a  
WHERE d.type = 'summary' 
ORDER BY b.name ASC 

本地,我没有任何问题,但在生产中我有这样的问题:

... LEFT JOIN LEFT JOIN ... 

所以第一个LEFT JOIN(b.document d )在生产中不工作,但在当地很好...(其他LEFT JOIN(作者链接&作者)都可以)

我的Book实体有:

/** 
* @var \Doctrine\Common\Collections\ArrayCollection 
* 
* @ORM\OneToMany(targetEntity="Document", mappedBy="book") 
* @ORM\OrderBy({"name" = "ASC"}) 
*/ 
protected $document; 

Document实体有:

/** 
* @var Book 
* 
* @ORM\ManyToOne(targetEntity="Book", inversedBy="document") 
* @ORM\JoinColumn(name="book_id", referencedColumnName="id", nullable=true) 
* @Assert\NotBlank 
*/ 
protected $book; 

任何想法?谢谢

+1

您是否清除了生产缓存?什么是你的缓存引擎?基本上实体关系可能会被缓存,所以你需要清除它。取决于你的缓存引擎的东西像重新启动Apache会帮助 –

+0

是的,我没有缓存:清除--env = prod – user2799086

+0

据我所知,我不需要关于子句,因为关系已配置 – user2799086

回答

0

解决!

我补充说: “与d.book_id = b.id” 后, “LEFT JOIN b.document d”

并补充

/** 
* @var book_id 
* @ORM\Column(name="book_id", type="integer") 
* @Assert\NotBlank 
*/ 
protected $book_id; 

在文档实体

THX的一切!