原则:检查歧视者实体是否存在关系

我正在尝试检查是否存在关系,换句话说,是列为NULL还是已填写。

这里有我的QueryBuilder:

$qb->select('v')
    ->from('Entities\Voucher','v')
    ->leftJoin('Entities\VoucherCopy','vc',\Doctrine\ORM\Query\Expr\Join::WITH,'v.voucherCopy = vc.id')
    ->where("v.code LIKE :voucherCode")
    ->andWhere('vc.id IS NULL');

如果VoucherCopy没有扩展“实体\代码”-单个表继承,那就可以了

VoucherCopy:

class VoucherCopy extends Codes

代码:

/**
 * Entities\DiscountCode
 *
 * @Table(name="discount_code")
 * @Entity()
 *
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="type",type="string")
 * @DiscriminatorMap({"D" = "DiscountCode","VT" = "PortalVoucher","V" = "VoucherCopy"})
 */
class Codes

问题是该查询构建器执行的SQL:

SELECT v0_.*
FROM voucher v0_ 
LEFT JOIN discount_code d1_ ON (
    v0_.discount_code_id = d1_.id
) WHERE (v0_.code LIKE '%DA70511911%' AND d1_.id IS NULL) AND d1_.type IN ('V')
;

注意 AND d1_.type IN ('V')。这是因为DQL自动添加了此内容,因为它知道这是该实体的鉴别符列,但是这样做AND d1_.id IS NULL变得多余,因为我无法通过AND d1_.type IN ('V')检查来检查关系是否失败。 / p>

使用单表继承时是否可以检查关系是否存在?

我已经尝试将leftJoin直接添加到Entities \ Code(父级),但是由于出现错误,所以我无法将区分符列(类型)添加为属性,因为在实体“ Entities \”上重复了“类型”列的定义字段或区分符列映射中的代码。

a728281971 回答:原则:检查歧视者实体是否存在关系

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3160144.html

大家都在问