我有一个很长的查询:
$a=$this->Signin->find('all',
array(
'fields'=> array(
.....
),
'conditions' => array('mytable.user_type ...),
'order' => ....
'limit' => ....
));
user_type 列的值可以为0或1。
我有一个函数参数$type
,关于这个参数,我需要更改我的SQL查询。关于$type
,我将查询
我不想三次写同一个查询。我只想更改条件部分。有可能吗?
答案 0 :(得分:2)
您可以将 $ type 定义为数组并管理$ type
中的值喜欢多个值
$type = array(1,0);
'conditions' => array('mytable.user_type'=>$type)
表示单值
$type = array(1);
'conditions' => array('mytable.user_type'=>$type)
因此你只需按照条件操纵$ type,希望这项工作
答案 1 :(得分: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);