gpt4 book ai didi

symfony - 包含其他实体但没有表的实体

转载 作者:行者123 更新时间:2023-12-02 15:40:07 26 4
gpt4 key购买 nike

我有一个实体(发票),它纯粹用于计算目的,没有表,它与通过表有关系的其他两个实体关联。 (尽管还有很多其他实体参与其中)。

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 中)与查询关联起来?

稍后此发票将成为另一个用于计算/搜索目的的大实体的一部分。

谢谢

最佳答案

简短回答:你不能

长答案:不能,因为带有 @ORM 注释的实体意味着它会持久保存到数据库中 - 查询该实体与查询数据库表相关。为什么不直接创建表呢?!?!?

您需要某个地方来保存文件之间的关联 - 数据库表是一个完美的地方!!!!

更新

只是为了澄清......实体只是一个标准类 - 它具有属性和方法......就像任何其他类一样 - 当您发出基于理论的命令时,它使用实体中的注释来配置表/列/关系等,如果删除它们,您可以随心所欲地使用它...但是您需要填充值才能使用它,并且您将无法在 Doctrine 查询中使用它,并且它显然不会被持久化!

关于symfony - 包含其他实体但没有表的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17472277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com