0

Doctrine Query Builder を使用してデータベースにクエリを実行しようとしています (これは Symfony2 フォーム用であるため、クエリ ビルダーを使用する必要があります)。

次のエラーが発生します。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'c2_.caseFileID' in 'on clause'

私のクエリは次のとおりです。

$er->createQueryBuilder('ia')  
   ->select( 'ia' )  
   ->from( 'TheBundle:CaseInstruction', 'ci' )  
   ->innerJoin( 'TheBundle:CaseFile', 'cf', 'WITH', 'ci.caseFile = cf' )  
   ->innerJoin( 'TheBundle:Workflow', 'wf', 'WITH', 'wf.product = ci.product AND wf.company = cf.company' )  
   ->innerJoin( 'TheBundle:WorkflowInstructionAction', 'wfia', 'WITH', 'wfia.instructionAction = ia AND wfia.workflow = wf' )  
   ->innerJoin( 'TheBundle:Process', 'p', 'WITH', 'p.currentStatus = ci.status AND p.workflow = wf' )  
   ->innerJoin( 'TheBundle:ProcessTrigger', 'pt', 'WITH', 'pt.instructionAction = ia AND pt.process = pt' )  
   ->where( 'ci.id = :cid' )  
   ->andWhere( 'ia.isSystemAction = :isSystemAction' )  
   ->setParameter( 'isSystemAction', '0' )  
   ->setParameter( 'cid', $options['caseInstructionId'] );

これは、次の教義クエリに評価されます (例外に示されているように):

'SELECT i0_.id AS id0,
        i0_.codeName AS codeName1,
        i0_.permissions AS permissions2,
        i0_.description AS description3,
        i0_.isSystemAction AS isSystemAction4,
        i0_.instructionActivityID AS instructionActivityID5,
        i0_.instructionSubjectID AS instructionSubjectID6 
 FROM InstructionAction i0_
     INNER JOIN CaseFile c1_ ON (c2_.caseFileID = c1_.id)
     INNER JOIN Workflow w3_ ON (w3_.productID = c2_.productID AND w3_.companyID = c1_.companyID) 
     INNER JOIN WorkflowInstructionAction w4_ ON (w4_.instructionActionID = i0_.id AND w4_.workflowID = w3_.id)
     INNER JOIN Process p5_ ON (p5_.currentStatusID = c2_.instructionStatusID AND p5_.workflowID = w3_.id) 
     INNER JOIN ProcessTrigger p6_ ON (p6_.instructionActionID = i0_.id AND p6_.processID = p6_.id), CaseInstruction c2_ 
 WHERE c2_.id = ? 
 AND i0_.isSystemAction = ?' with params ["307", "0"]

(できるだけ読みやすいようにしています)

このエラーを修正する方法を知っている人はいますか? 私はネイティブ SQL バージョンを動作させていますが、実際にはそれを Doctrine Query Builder に変換しようとしていました。

編集:作業中のSQL:

SELECT ia.* FROM (InstructionAction ia, CaseInstruction ci)
JOIN CaseFile cf ON ci.caseFileID=cf.id
JOIN Workflow wf ON ci.productID=wf.productID AND wf.companyID = cf.companyID
JOIN WorkflowInstructionAction wia ON wia.workflowID=wf.id AND wia.instructionActionID = ia.id
JOIN Process p ON p.currentStatusID = ci.instructionStatusID AND p.workflowID = wf.id
JOIN ProcessTrigger pt ON pt.instructionActionID = ia.id AND pt.processID = p.id

WHERE ci.id = 275
AND ia.isSystemAction=0;

CaseInstruction IDは単なる CaseInstruction ID の例であり、Query Builder では に275置き換えられます。$options['caseInstructionID']

4

0 に答える 0