0

我有一个像这样的长查询:

$a=$this->Signin->find('all',
    array(
        'fields'=> array(
            .....
        ),
        'conditions' => array('mytable.user_type ...),
        'order' => ....
        'limit' => ....
));

user_type列可以取 0 或 1 的值。我有一个函数参数$type,关于这个参数,我需要更改我的 SQL 查询。关于$type我将查询

  • "mytable.user_type"=1,
  • "mytable.user_type"=0,
  • “mytable.user_type”=1 或 “mytable.user_type=0

我不想写三遍相同的查询。我只想更改条件部分。可能吗?

4

2 回答 2

2

您可以将$type定义为数组并管理 $type 中的值

喜欢多个值

$type = array(1,0);
'conditions' => array('mytable.user_type'=>$type)

单值

$type = array(1);
'conditions' => array('mytable.user_type'=>$type)

因此,您只需要根据条件操作 $type,希望这项工作

于 2012-08-27T18:18:41.583 回答
1

尝试这个:

$user_type = ($type == 'something') ? 1 : 0 ;

然后,在您的条件下:

'conditions' => array('mytable.user_type' => $user_type);

鉴于 user_type 只能取两个值,您的第三个查询 ( "mytable.user_type"=1 OR "mytable.user_type=0) 是不必要的

编辑 :

if($type == 'conditions_where_usertype_is_necessary') $user_type = ($type == 'something') ? 1 : 0 ;

然后,根据您的条件:

if( isset($user_type) ) {
    $options['conditions']['mytable.user_type'] = $user_type;
}
$options['conditions']['other_conditions'] = ...;
$this->Signin->find('all', $options);
于 2012-08-27T19:20:08.783 回答