You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.6 KiB
82 lines
1.6 KiB
<?php
|
|
|
|
class SqlCriteria
|
|
{
|
|
public $select = '*';
|
|
|
|
public $distinct = '';
|
|
|
|
public $where = array();
|
|
|
|
public $order = array();
|
|
|
|
public $limit = '';
|
|
|
|
/**
|
|
* @return SqlCriteria
|
|
*/
|
|
public static function getInstance()
|
|
{
|
|
return self;
|
|
}
|
|
|
|
/**
|
|
* @param $conditions array @ex array('field=?' => $value, 'field in ? => new DbExpr('(1,2,3)'))
|
|
* @return SqlCriteria
|
|
*/
|
|
public function where($conditions)
|
|
{
|
|
$this->where = $conditions;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param $fields array @ex array('field1', 'field2' => SqlModel::ORDER_DESC)
|
|
* @return SqlCriteria
|
|
*/
|
|
public function order($fields)
|
|
{
|
|
if (!is_array($fields)) {
|
|
$fields = array($fields);
|
|
}
|
|
$this->order = $fields;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param $limit int
|
|
* @param $offset int
|
|
* @return SqlCriteria
|
|
*/
|
|
public function limit($limit, $offset = 0)
|
|
{
|
|
if (empty($offset)) {
|
|
$this->limit = (int) $limit;
|
|
}
|
|
$this->limit = (int)$limit . ',' . (int) $offset;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $select array @ex array('field1', 'field2', 'field3' => 'field')
|
|
* @return string
|
|
*/
|
|
public function select($select)
|
|
{
|
|
if (!is_array($select)) {
|
|
$select = array($select);
|
|
}
|
|
$this->select = $select;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param $field string
|
|
* @return SqlCriteria
|
|
*/
|
|
public function distinct($field)
|
|
{
|
|
$this->distinct = $field;
|
|
return $this;
|
|
}
|
|
}
|