繁体   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