如何使用cakephp中另一个条件中的条件
问题描述:
我有一个字段的答案。另外我还有两个ids,即男性和女性的id字段在另一个表中名为ca_field_id
。如何使用cakephp中另一个条件中的条件
我的要求是我想与下列条件获得数据
- 既IDS男性(ID = 37)和女性(ID = 38)
- 的男女的67
- 岁年龄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))
)
)
);
请告诉我该怎么解决这个问题?
答
你试过
$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条件。但是在每一种情况下,这两种情况都需要满足
它可能并不完全正确,但这些应该让你知道如何完成它。 (刚刚离开我的头顶)。
请按4个空格缩进代码或选择它并按ctrl + K。内联代码应该像这样标记:'''代码\''谢谢。 – Soaku
哪个字段存储年龄? –