1: <?php
2: /**
3: * CDbExpression class file.
4: *
5: * @author Qiang Xue <qiang.xue@gmail.com>
6: * @link http://www.yiiframework.com/
7: * @copyright 2008-2013 Yii Software LLC
8: * @license http://www.yiiframework.com/license/
9: */
10:
11: /**
12: * CDbExpression represents a DB expression that does not need escaping.
13: * CDbExpression is mainly used in {@link CActiveRecord} as attribute values.
14: * When inserting or updating a {@link CActiveRecord}, attribute values of
15: * type CDbExpression will be directly put into the corresponding SQL statement
16: * without escaping. A typical usage is that an attribute is set with 'NOW()'
17: * expression so that saving the record would fill the corresponding column
18: * with the current DB server timestamp.
19: *
20: * Starting from version 1.1.1, one can also specify parameters to be bound
21: * for the expression. For example, if the expression is 'LOWER(:value)', then
22: * one can set {@link params} to be <code>array(':value'=>$value)</code>.
23: *
24: * @author Qiang Xue <qiang.xue@gmail.com>
25: * @package system.db.schema
26: */
27: class CDbExpression extends CComponent
28: {
29: /**
30: * @var string the DB expression
31: */
32: public $expression;
33: /**
34: * @var array list of parameters that should be bound for this expression.
35: * The keys are placeholders appearing in {@link expression}, while the values
36: * are the corresponding parameter values.
37: * @since 1.1.1
38: */
39: public $params=array();
40:
41: /**
42: * Constructor.
43: * @param string $expression the DB expression
44: * @param array $params parameters
45: */
46: public function __construct($expression,$params=array())
47: {
48: $this->expression=$expression;
49: $this->params=$params;
50: }
51:
52: /**
53: * String magic method
54: * @return string the DB expression
55: */
56: public function __toString()
57: {
58: return $this->expression;
59: }
60: }