Cakephp 简单或条件
Cakephp simple OR condition
我想用 Cakephp find.. 执行简单的 OR 语句.. 无法使这个 or 条件正常工作,始终这往往会执行语句的第一部分而不是 OR..有人提供任何指示吗?
$hols = $this->find('all', array(
'conditions' => array(
'Holiday.leave_type <>' =>3,
'Holiday.user_id' => $userID,
'Holiday.start >=' => $firstDayThisMonth,
'Holiday.start <=' => $lastDayThisMonth
),
'OR' => array(
'Holiday.leave_type' =>3,
'Holiday.active' => 1,
'Holiday.user_id' => null,
'Holiday.start >=' => $firstDayThisMonth,
'Holiday.start <=' => $lastDayThisMonth
)
)
OR
运算符仅适用于子数组。所以要表达规则 A OR B
你必须写成 'conditions'=>array('OR'=>array(array(A),array(B)))
where 子句的条件为:
$hols = $this->find('all', array(
'conditions' => array(
'OR'=>array(
array(
'Holiday.leave_type <>' =>3,
'Holiday.user_id' => $userID,
'Holiday.start >=' => $firstDayThisMonth,
'Holiday.start <=' => $lastDayThisMonth
),
array(
'Holiday.leave_type' =>3,
'Holiday.active' => 1,
'Holiday.user_id' => null,
'Holiday.start >=' => $firstDayThisMonth,
'Holiday.start <=' => $lastDayThisMonth
)
)
)
)
您可以将其简化为:
$hols = $this->find('all', array(
'conditions' => array(
'Holiday.start BETWEEN ? AND ?' => array($firstDayThisMonth,$lastDayThisMonth),
'OR'=>array(
array(
'Holiday.leave_type <>' =>3,
'Holiday.user_id' => $userID,
),
array(
'Holiday.leave_type' =>3,
'Holiday.active' => 1,
'Holiday.user_id' => null
)
)
)
)
我想用 Cakephp find.. 执行简单的 OR 语句.. 无法使这个 or 条件正常工作,始终这往往会执行语句的第一部分而不是 OR..有人提供任何指示吗?
$hols = $this->find('all', array(
'conditions' => array(
'Holiday.leave_type <>' =>3,
'Holiday.user_id' => $userID,
'Holiday.start >=' => $firstDayThisMonth,
'Holiday.start <=' => $lastDayThisMonth
),
'OR' => array(
'Holiday.leave_type' =>3,
'Holiday.active' => 1,
'Holiday.user_id' => null,
'Holiday.start >=' => $firstDayThisMonth,
'Holiday.start <=' => $lastDayThisMonth
)
)
OR
运算符仅适用于子数组。所以要表达规则 A OR B
你必须写成 'conditions'=>array('OR'=>array(array(A),array(B)))
where 子句的条件为:
$hols = $this->find('all', array(
'conditions' => array(
'OR'=>array(
array(
'Holiday.leave_type <>' =>3,
'Holiday.user_id' => $userID,
'Holiday.start >=' => $firstDayThisMonth,
'Holiday.start <=' => $lastDayThisMonth
),
array(
'Holiday.leave_type' =>3,
'Holiday.active' => 1,
'Holiday.user_id' => null,
'Holiday.start >=' => $firstDayThisMonth,
'Holiday.start <=' => $lastDayThisMonth
)
)
)
)
您可以将其简化为:
$hols = $this->find('all', array(
'conditions' => array(
'Holiday.start BETWEEN ? AND ?' => array($firstDayThisMonth,$lastDayThisMonth),
'OR'=>array(
array(
'Holiday.leave_type <>' =>3,
'Holiday.user_id' => $userID,
),
array(
'Holiday.leave_type' =>3,
'Holiday.active' => 1,
'Holiday.user_id' => null
)
)
)
)