Mysql 无效的路径表达式。必须是StateFieldPathExpression

Mysql 无效的路径表达式。必须是StateFieldPathExpression,mysql,symfony,doctrine-orm,query-builder,Mysql,Symfony,Doctrine Orm,Query Builder,我得到一个错误,它位于“来自AppBundle的房间:bookings”附近的第57列第0行[语义错误]:错误:无效的PathExpression。必须是StateFieldPathExpression。 我在AppBundle中有两个实体,即房间和预订。执行查询后,我会得到前面提到的错误。 我的问题是: $query = $em->createQuery( 'SELECT r ' .

我得到一个错误,它位于“来自AppBundle的房间:bookings”附近的第57列第0行
[语义错误]:错误:无效的PathExpression。必须是StateFieldPathExpression。
我在AppBundle中有两个实体,即房间和预订。执行查询后,我会得到前面提到的错误。 我的问题是:

$query = $em->createQuery(
                            'SELECT r ' .
                            'FROM AppBundle:Room r ' .
                            'WHERE r NOT IN ( ' .
                            'SELECT b.room ' .
                            'FROM AppBundle:Bookings b ' .
                            'WHERE NOT ( ' .
                            'b.check_out < :check_in ' .
                            'OR ' .
                            'b.check_in > :check_out ' .
                            ')' .
                            ') ' .
                            'ORDER BY r.id'
                    )
                    ->setParameter('check_in', $request->query->get('check-in'))
                    ->setParameter('check_out', $request->query->get('check-out'));
$query=$em->createQuery(
“选择r”。
'来自AppBundle:r室'。
'其中r不在('。
“选择b.room”。
'来自AppBundle:预订b'。
“WHERE NOT(”)。
“b.签出<:check_-in”。
“或”。
“b.签入>:签出”。
')' .
') ' .
“按r.id订购”
)
->setParameter('check_-in',$request->query->get('check-in'))
->setParameter('check_out',$request->query->get('check-out');

我认为问题在于
没有
的地方。
尝试此查询:

$query = $em->createQuery(
                            'SELECT r ' .
                            'FROM AppBundle:Room r ' .
                            'WHERE r NOT IN ( ' .
                            'SELECT b.room ' .
                            'FROM AppBundle:Bookings b ' .
                            'WHERE  ' .
                            'b.check_out < :check_in ' .
                            'OR ' .
                            'b.check_in > :check_out ' .
                            ') ' .
                            'ORDER BY r.id'
                    )
                    ->setParameter('check_in', $request->query->get('check-in'))
                    ->setParameter('check_out', $request->query->get('check-out'));
$query=$em->createQuery(
“选择r”。
'来自AppBundle:r室'。
'其中r不在('。
“选择b.room”。
'来自AppBundle:预订b'。
“哪里”。
“b.签出<:check_-in”。
“或”。
“b.签入>:签出”。
') ' .
“按r.id订购”
)
->setParameter('check_-in',$request->query->get('check-in'))
->setParameter('check_out',$request->query->get('check-out');

我认为问题是关于
的,其中不
可能重复的感谢您的回答,但是当我在MySQL数据库中执行查询时,查询工作正常。问题不在查询语法中。请使用createQueryBuilder编写它好吗?