2017-03-16 1 views
0

で動的な値に等しいクエリ条件を作成する方法:フィールドを比較すると、私はこのようなクエリを作成しようとしているCakePHPの3

$spreadsheet = $this->Spreadsheets->get($id, [ 
     'contain' => [ 
      'SpreadsheetTypes.CentersTypes' => function ($q) { 
       return $q->matching('Centers', function ($q) { 
        return $q->where(['Centers.id' => 5]); 
       })->contain(['Items']); 
      } 
     ] 
    ]); 

の$ id値がパラメータで渡されます。しかし、私はこのクエリで取得しますcenter_id値で「Centers.id」を比較する必要があるため

return $q->where(['Centers.id' => 5]) 

を変更する必要があります。つまり、スプレッドシートにはcenter_idフィールドがあるので、それを比較する必要があります。

+0

それは1が正確にyou'areを求めて何を理解したら、その質問に答えることは比較的簡単だが、それはかどうかを言うのは難しいですあなたのアソシエーションの種類やそのクエリの意図が不明なため、実際に動作します。表示されているクエリでは、そのような比較は、すべての包含が1:1またはn:1の関連である場合にのみ機能します。 – ndm

+0

アソシエーションの詳細に加えて、なぜコンテナを使用しているのか、つまり実際にそのデータを格納したいのか、これらのアソシエーションだけをフィルタリングするのかについて言えば助けになります。 – ndm

答えて

0

アドオン「使用」機能($ qを)

exemple後

return $q->matching('Centers', function ($q) use($foo) { 
        return $q->where(['Centers.id' => $foo]); 
       })->co 
+0

こんにちは! 私は得意なスプレッドシートのcenter_idと比較したいので、私の問題は解決しません...だから、現時点では値が分かりません –

+0

あなたの中に$ idを渡そうとしましたか?あまりにも?この $スプレッド=の$ this - > Spreadsheets->取得($ ID、[ '含む' => [ 'SpreadsheetTypes.CentersTypes' =>関数($のQ)($ IDを使用){ 戻りの$ Q様(['Centers.id' => $ id]); }) - > contains(['Items()';}一致する項目を指定してください( 'Center'、function($ q)use($ id){ return $ q-> ']); } ] ]); – Gransfall

関連する問題