簡體   English   中英

如何在cakephp中的另一個條件內使用條件

[英]How to use condition inside another condition in cakephp

我有一個答案。 我也有兩個ID,即男人和女人的ID字段在另一個表中的名稱為ca_field_id

我的要求是我要在以下條件下獲取數據

  1. 既有男人(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))
        )
    )
 );

請告訴我我該如何解決...

嘗試這個:

$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條件或第二組AND條件。 但是在每個方面,兩個條件都需要滿足。

可能不完全正確,但是這些應該可以讓您了解如何完成此操作。 (就從我頭頂上跳下來)。

你有沒有嘗試過

$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))
        )
    )
 );

如果我沒記錯的話,array($ numberofemployeesmen,$ numberofemployeeswomen)創建一個像這樣的數組0 => $ numberofemployeesmen 1 => $ numberofemployeeswomen

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM