gpt4 book ai didi

sql - Symfony2 - Doctrine DQL - 选择与另一个表行无关的行

转载 作者:行者123 更新时间:2023-12-04 23:46:50 25 4
gpt4 key购买 nike

我有两个表 OfferOfferSuggestion,它们具有 FOREIGN_KEY 并且与 Offer 相关。我想获取尚未与 OfferSuggestion 的任何行相关的 Offer 行。

优惠:

id      name
1 offer1
2 offer2

报价建议:

id    offer_id   name
1 2 suggestion2

在这种情况下,我应该得到没有建议的offer1

到目前为止我已经试过了,但是没有用:

$query = 'SELECT o FROM IndexBundle:Offer o '.
'WHERE NOT EXISTS ('.
'SELECT s.offer FROM IndexBundle:OfferSuggestion s '.
'WHERE o.id = s.offer)';
$query = $em->createQuery($query);

我得到一个错误:

[Semantical Error] line 0, col 91 near 'offer FROM IndexBundle:OfferSuggestion': Error: Invalid PathExpression. Must be a StateFieldPathExpression.

知道我遗漏了什么吗?

最佳答案

您可以简单地引用对象实例如下:

$query = 'SELECT o FROM IndexBundle:Offer o '.
'WHERE NOT EXISTS ('.
'SELECT s FROM IndexBundle:OfferSuggestion s '.
'WHERE o = s.offer)';

您还可以使用查询生成器创建子查询:

作为示例,仅用于演示如何在 select 语句中使用子查询 select 语句,假设我们要查找所有尚未编译地址的用户(地址表中不存在记录):

 // get an ExpressionBuilder instance, so that you
$expr = $this->_em->getExpressionBuilder();

// create a subquery in order to take all address records for a specified user id
$sub = $this->_em->createQueryBuilder()
->select('a')
->from($this->_addressEntityName, 'a')
->where('a.user = u.id');


$qb = $this->_em->createQueryBuilder()
->select('u')
->from($this->_userEntityName, 'u')
->where($expr->not($expr->exists($sub->getDQL())));

return $qb->getQuery()->getResult();

关于sql - Symfony2 - Doctrine DQL - 选择与另一个表行无关的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228675/

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