我有一个纯粹用于计算目的的实体(发票),没有表,它与其他两个具有表关系的实体相关联。(尽管涉及的其他实体很多)。
class Row{
/**
* @var integer
*
* @ORM\Column(name="row_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="File")
* @ORM\JoinColumn(name="file_id", referencedColumnName="file_id")
*/
protected $file;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="date")
*/
private $date;
}
class File
{
/**
* @var integer
*
* @ORM\Column(name="file_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
}
class Invoice
{
/**
* @ORM\Id
* @ORM\Column(name="invoice_id", type="integer")
* @ORM\GeneratedValue
*/
protected $id = null;
/**
* @ORM\OneToMany(targetEntity="Row", mappedBy="row_id")
*/
protected $row;
/**
* @ORM\OneToMany(targetEntity="File", mappedBy="file_id")
*/
protected $file;
}
我希望能够查询发票:
$sDate = //Some date
$this->getEntityManager()
->createQuery("SELECT Invoice, Row, File
FROM
ReportsEntitiesBundle:Invoice Invoice
LEFT JOIN
Row.row Row
LEFT JOIN
Row.file File
WHERE date=:date"
)
->setParaMeter(':date', $sDate)
->setFirstResult($iPage*$iLimit)
->setMaxResults($iLimit)
->getResult();
问题:# Doctrine 尝试查询数据库,我怎样才能阻止它并让它找到相关实体?# 如何将日期(在 Row 实体中,不能在 Invoice 中)与查询相关联?
稍后此发票将成为另一个用于计算/搜索目的的大实体的一部分。
谢谢