如何使用cakephp中另一个条件中的条件

问题描述:

我有一个字段的答案。另外我还有两个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

哪个字段存储年龄? –

你试过

$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

尝试这样的数组:

$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条件。但是在每一种情况下,这两种情况都需要满足

它可能并不完全正确,但这些应该让你知道如何完成它。 (刚刚离开我的头顶)。