我需要“连接”HolidayPackage
到Discount
(一对一)的实例,并且能够在从存储库获取数据时获取连接。即:如何在没有“真正的”外键的情况下获取Doctrine中的连接?
// Inside a method of HolidayPackageRepository repository class
$qb = $this->createQueryBuilder($alias = 'hp');
$qb->leftJoin("$alias.discount", 'd')
->addSelect('d'); // fetch join
的问题是discount
表被删除并重新填补每几个小时,所以discount_id
不能成为一个真正的外键。但是标识符可能保持不变:
/**
* @ORM\Entity()
* @ORM\Table("holiday_package")
*/
class HolidayPackage
{
/**
* @ORM\Column(name="discount_id", type="integer", nullable=true)
*
* @var null|Discount
*/
private $discount;
}
如何在没有真正外键的情况下获取连接?
您可能只需要进行第二次查询或下拉到SQL。 – Cerad
@Cerad这是我目前正在做的,我正在寻找更好的方式... – gremo