Php 引发[语义错误]的条令查询生成器
我遇到条令查询生成器向我抛出[Semantical Error]的问题。我尝试生成的查询如下:-Php 引发[语义错误]的条令查询生成器,php,zend-framework,doctrine-orm,Php,Zend Framework,Doctrine Orm,我遇到条令查询生成器向我抛出[Semantical Error]的问题。我尝试生成的查询如下:- $query = $this->_em->createQueryBuilder() ->select('r, m') ->from('Ajfit\Entity\TicketReply', 'r') ->join('r.mailFk', 'm') ->where('r.ticketFk = :ticket
$query = $this->_em->createQueryBuilder()
->select('r, m')
->from('Ajfit\Entity\TicketReply', 'r')
->join('r.mailFk', 'm')
->where('r.ticketFk = :ticket')
->orderBy('m.dt', 'desc')
->setParameter('ticket', $ticket)
->getQuery();
$paginator = new Paginator($query);
return $paginator->getIterator(); //////////blows up here!
引发的错误是:-
[Semantical Error] line 0, col 64 near 'm WHERE r.ticketFk': Error: Class Ajfit\Entity\TicketReply has no association named mailFk
错误所指的实体是:-
名称空间Ajfit\Entity
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Persistence\PersistentObject;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Ajfit\Entity\TicketReply
*
* @ORM\Table(name="ticket_reply")
* @ORM\Entity(repositoryClass="Ajfit\Repository\TicketReply")
* @ORM\HasLifecycleCallbacks
*/
class TicketReply extends \Doctrine\Common\Persistence\PersistentObject
{
/**
* @ORM\Id
* @ORM\Column(name="mail_fk", type="integer")
* @ORM\ManyToOne(targetEntity="Ajfit\Entity\Mail", inversedBy="replies")
* @ORM\JoinColumn(name="mail_fk", referencedColumnName="pk")
*/
protected $mailFk;
/**
* @ORM\Id
* @ORM\Column(name="ticket_fk", type="integer")
* @ORM\ManyToOne(targetEntity="Ajfit\Entity\Ticket", inversedBy="replies")
* @ORM\JoinColumn(name="ticket_fk", referencedColumnName="pk")
*/
protected $ticketFk;
/**
* @var integer $rating
*
* @ORM\Column(name="rating", type="integer")
*/
protected $rating;
}
由于错误详细说明TicketReply实体并没有mailFk关联,但它确实有关联,所以我编写querybuilder的原因有问题吗
感谢Andrew您的
$mailFk
既有列
又有多通
注释。列批注不能用于存储关系。
条令似乎选择了在多通
上使用列
注释
删除@ORM\Column
注释:
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Ajfit\Entity\Mail", inversedBy="replies")
* @ORM\JoinColumn(name="mail_fk", referencedColumnName="pk")
*/
protected $mailFk;
对
$ticketFk
执行相同的操作您的$mailFk
既有列
又有多通
注释。列批注不能用于存储关系。
条令似乎选择了在多通
上使用列
注释
删除@ORM\Column
注释:
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Ajfit\Entity\Mail", inversedBy="replies")
* @ORM\JoinColumn(name="mail_fk", referencedColumnName="pk")
*/
protected $mailFk;
对$ticketFk执行相同操作