如何在symfony中创建Where In子查询

问题描述 投票:0回答:1

我正在尝试使用Doctrine QueryBuilder进行此SQL查询:

SELECT * FROM events WHERE NOT id in (SELECT event_id FROM ues WHERE user_id = $userID)

UserEventStatus具有来自User和event的外键,以及状态的整数。我现在想查询所有来自特定用户的事件,这些事件在UserEventStatus中没有条目。我在EventRepository中的功能如下:

    public function getUnReactedEvents(int $userID){
        $expr = $this->getEntityManager()->getExpressionBuilder();
        $originalQuery = $this->createQueryBuilder('e');
        $subquery= $this->createQueryBuilder('b');
        $originalQuery->where(
            $expr->not(
                $expr->in(
                    'e.id',
                    $subquery
                        ->select('ues.user')
                        ->from('App/Entity/UserEventStatus', "ues")
                        ->where(
                            $expr->eq('ues.user', $userID)
                    )
                )
            )
        );
        $originalQuery->getDQL();
        return $subquery->getQuery()->getResult();

    }

但是我收到一条错误消息:Error: Method Doctrine\Common\Collections\ArrayCollection::__toString() must not throw an exception, caught ErrorException: Catchable Fatal Error: Object of class Doctrine\ORM\EntityManager could not be converted to string (500 Internal Server Error)任何人都可以帮助我或在文档中指出正确的地方吗?原因是我找不到描述我的问题的东西。另一件事是,我不知道它是否可能,但这会很好。我可以以某种方式直接提出对象请求吗?我的意思不是使用字符串App/Entity/UserEventStatus,而是使用类似UserEventStatus :: class之类的东西。感谢您的帮助。 :)

编辑:忘了我在结尾处有一个$originalQuery->getDQL();。如果我将其切出,则会收到此[Semantical Error] line 0, col 41 near 'App/Entity/UserEventStatus': Error: Class 'App' is not defined. (500 Internal Server Error)

php symfony doctrine dql
1个回答
0
投票
在查询中构建并在哪里

public function search($term) { return $this->createQueryBuilder('cat') ->andWhere('cat.name = :searchTerm') ->setParameter('searchTerm', $term) ->getQuery() ->execute(); }

简单为:->where('cat.name = :searchTerm')

And WHERE Or WHERE

© www.soinside.com 2019 - 2024. All rights reserved.