public function testParseConditions() { $this->assertEquals(array('sql' => 'age > 10', 'values' => array()), SqlBuilder::parseConditions(array('age > 10'))); $this->assertEquals(array('sql' => 'age > ?', 'values' => array(10)), SqlBuilder::parseConditions(array('age > ?', 10))); $this->assertEquals(array('sql' => 'id in (?) or country = ?', 'values' => array(array(1, 2), 'China')), SqlBuilder::parseConditions(array('id in (?) or country = ?', array(1, 2), 'China'))); $this->assertEquals(array('sql' => '`id` in (?) and `country` = ?', 'values' => array(array(1, 2), 'China')), SqlBuilder::parseConditions(array('id' => array(1, 2), 'country' => 'China'))); }
protected function _parseConditions($metadata) { $conditions = array('sql' => '', 'values' => array()); if (isset($metadata['conditions'])) { $conditions = SqlBuilder::parseConditions($metadata['conditions']); } $defaultCondition = $this->_parseDefaultCondition($metadata); if (empty($conditions['sql'])) { $conditions['sql'] = $defaultCondition['sql']; } else { $conditions['sql'] = "({$conditions['sql']}) AND ({$defaultCondition['sql']})"; } array_push($conditions['values'], $defaultCondition['value']); return array_merge(array($conditions['sql']), $conditions['values']); }