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

<?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;
}
}