2017-04-13 89 views
0

我有一個字段的答案。另外我還有兩個ids,即男性和女性的id字段在另一個表中名爲ca_field_id如何使用cakephp中另一個條件中的條件

我的要求是我想與下列條件獲得數據

  1. 既IDS男性(ID = 37)和女性(ID = 38)
  2. 的男女的67
  3. 歲年齡65

但是我得到的數據都是67歲的男性以及67歲的女性,反之亦然。

下面查詢:

$numberofemployeesmen = 37; 
$numberofemployeeswomen =38; 

$caanswer = $this->CaAnswer->find('all', 
    array(
     'conditions' => array(
      'CaAnswer.ca_field_id' => array($numberofemployeesmen,$numberofemployeeswomen), 
      'CaAnswer.answer' => array(67,65) 
     ) 
    ) 
); 

我也試過如下,但沒有奏效

$numberofemployeesmen = 37; 
$numberofemployeeswomen =38; 

$caanswer = $this->CaAnswer->find('all', 
    array('conditions' => array(
     'CaAnswer.ca_field_id' => array($numberofemployeesmen,$numberofemployeeswomen), 
     'CaAnswer.answer'=> array(
      67 AND array('CaAnswer.ca_field_id' =>$numberofemployeesmen), 
      65 AND array('CaAnswer.ca_field_id'=>$numberofemployeeswomen)) 
     ) 
    ) 
); 

請告訴我該怎麼解決這個問題?

+0

請按4個空格縮進代碼或選擇它並按ctrl + K。內聯代碼應該像這樣標記:'''代碼\''謝謝。 – Soaku

+0

哪個字段存儲年齡? –

回答

0

你試過

$caanswer = $this->CaAnswer->find('all', 
    array('conditions' => array(
     'CaAnswer.ca_field_id' => array($numberofemployeesmen,$numberofemployeeswomen), 
     'CaAnswer.answer'=> array(
      67 AND array('CaAnswer.ca_field_id' =>0), 
      65 AND array('CaAnswer.ca_field_id'=>1)) 
     ) 
    ) 
); 

如果我沒有記錯陣列($ numberofemployeesmen,$ numberofemployeeswomen)創建這樣0 => $ numberofemployeesmen 1 => $ numberofemployeeswomen

1

嘗試這樣的數組:

$numberofemployeesmen = 37; 
$numberofemployeeswomen = 38; 

$caanswer = $this->CaAnswer->find('all', 
    [ 
     'conditions' => [ 
      'OR' => [ 
       [ 
        'CaAnswer.ca_field_id' => $numberofemployeesmen, 
        'CaAnswer.answer' => 67 
       ], 
       [ 
        'CaAnswer.ca_field_id' => $numberofemployeeswomen, 
        'CaAnswer.answer' => 65 
       ], 
      ] 
     ] 
    ] 
); 

如果不工作,你可能需要OR中添加額外的AND鍵:在這一個

$caanswer = $this->CaAnswer->find('all', 
    [ 
     'conditions' => [ 
      'OR' => [ 
       [ 
        'AND' => [ 
         'CaAnswer.ca_field_id' => $numberofemployeesmen, 
         'CaAnswer.answer' => 67 
        ], 
       ], 
       [ 
        'AND' => [ 
         'CaAnswer.ca_field_id' => $numberofemployeeswomen, 
         'CaAnswer.answer' => 65 
        ], 
       ], 
      ] 
     ] 
    ] 
); 

通知,AND是自己的陣列,使得第二內鍵不會覆蓋第一個。

這個想法是,你說我想要這第一組AND條件或第二組AND條件。但是在每一種情況下,這兩種情況都需要滿足

它可能並不完全正確,但這些應該讓你知道如何完成它。 (剛剛離開我的頭頂)。