2017-12-19 47 views
-4

私はsymfony3.4で教義2を使用していると私は、複雑なクエリがあります。教義クエリビルダ

$query = $this->createQueryBuilder(
         'SELECT id FROM AppBundle:Room WHERE id NOT IN (SELECT room_id FROM AppBundle:Bookings WHERE NOT (checkOut <= :check_in OR checkIn >= :check_out)) ORDER BY id' 
       ) 
       ->setParameter('check_in', $request->query->get('check-in')) 
       ->setParameter('check_out', $request->query->get('check-out')) 
       ->getQuery(); 

     return $rooms = $query->execute() ; 

私の問題があるが、私はこのクエリを実行すると、私はエラーを取得する:

[Syntax Error] line 0, col 7: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got 'SELECT' 
+0

ご回答いただきありがとうございます。私は質問がひどく書かれていることを知っていますが、私はあなたが私が意味したものを持っていると思います – Mostafa

+0

私はそれが今では明らかだと思います – Mostafa

答えて

1

createQueryBuilderメソッドが最初のパラメータとして文字列を期待していますが、完全なクエリ文を提供していると、結果はこのようなものになるだろう:

太字部分はcreateQueryBuilderメソッド内クエリで例外を発生させること

テーブルから ... 選択IDを選択します。

代わりにこれを試してみてください:

$this->createQueryBuilder('alias')->addSelect('alias.id') 
->where(...) 
->orderBy(...) 

が、それはあなたがあなたの古いコードでどこの後で、クエリビルダとは何か置く場所内部

EDIT

を役に立てば幸いSQLを使わずにクエリを構築し、doctrineがクエリを作成できるようにします

これをチェックしてくださいdoc

+0

あなたはコードの残りの部分を書いてください、 – Mostafa

+1

@Mostafaはコードの残りの部分を要求しません。彼はソリューションとドキュメントを提供していますので、それを読んで、自分で試してみてください。がんばろう – ReynierPM