2017-03-16 27 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是由參數傳遞。但我需要更改

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

因爲我需要比較'Centers.id'與我將在此查詢中獲得的center_id值。我的意思是,Spreadsheets有一個center_id字段,所以我需要與它進行比較。 有什麼想法?

+0

雖然這是比較容易回答這個問題,一旦一個明白究竟you'are要求,這是很難說是否這實際上會起作用,因爲您的關聯類型以及該查詢的意圖都是未知的。通過您顯示的查詢,例如僅當所有包含爲1:1或n:1關聯的情況下才進行比較。 – ndm

+0

此外該協會的細節,這也將有助於如果你提到爲什麼你正在使用的安全殼,也就是你真正想要包含的數據,或者你只是想通過這些協會進行篩選。 – ndm

回答

0

添加「使用」功能($ Q)

爲例之後

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

嗨! 它不能解決我的問題,因爲我想與電子表格的center_id進行比較,所以我現在不知道這個值 –

+0

您是否嘗試在您的包含中傳遞$ id呢? ($ id){ '包含'=> [ 'SpreadsheetTypes.CentersTypes'=>函數($ q)use($ id) - > matching('Centers',function($ q)use($ id)return $ q-> where(['Centers.id'=> $ id]); } - > contains(['Items 「]);} ] ]); – Gransfall

相關問題