最初的posted在cakephp问答,但我会把它放在这里,希望得到一些答案。
我有很多公司的默认状态为0,但有时会获得更高的状态。现在,如果存在,我想使用高状态,如果不存在,我想恢复为0。我尝试了很多不同的方法,但我总是只获得状态为0的公司,或者获得我想要的状态的公司,如果存在,我从不给我状态,如果不存在,我也不给我状态。
仅提供我指定的状态,而不提供状态为0的状态:
'Company' => array (
'conditions' => array (
'OR' => array(
'Company.status' => 0,
'Company.status' => $status,
)
)
)
仅提供状态0:
'Company' => array (
'conditions' => array (
'OR' => array(
'Company.status' => $status,
'Company.status' => 0
)
)
)
状态定义和检索代码中的数据:
function getCountry($id = null, $status = null) {
// Bunch of code for retrieving country with $id and all it's companies etc, all with status 0.
$status_less_companies = $this->Country->find...
if ($status) {
$status_companies = $this->Country->find('first', array(
'conditions' => array(
'Country.id' => $id
),
'contain' => array(
'Product' => array (
'Company' => array (
'conditions' => array (
'OR' => array(
'Company.status' => $status,
'Company.status' => 0
)
)
)
)
)
)
}
// Mergin $status_less_companies and $status_companies and returning data to flex application.
}
我为这个问题更改了模型的名称,只是为了更有意义,当我告诉人们我为我的flex应用程序使用cakephp时,他们通常会被吓跑。我猜这个问题的逻辑没有意义,但相信我,它在我的应用程序中是有意义的。
谢谢你!
4条答案
按热度按时间o4hqfura1#
尝试
在Cookbook中,如果OR条件属于同一个字段,则将它们 Package 在数组中http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#complex-find-conditions
7bsow1i62#
我不确定是否理解了您期望的结果。如果您想检索状态为0的所有记录,再加上状态为3的记录,您可以使用“IN”而不是“OR”。
在Cake中,您可以这样写:
uqcuzwp83#
您也可以使用以下方法提取记录:将值放入数组中,例如$arr=array(1,2);
我希望你能找到答案。
k5ifujac4#