Yii allows developers to construct SQL statement.
This will help advanced developer to tune his/her SQL query (by using appropriate indexes).
Example:
$connection=Yii::app()->db;
$sql = "SELECT t1.colA, t2.colB, t3.colC, t3.colD
FROM tableA t1
LEFT JOIN tableB t2 ON t1.id=t2.id
LEFT JOIN tableC t3 ON t2.pid=t3.pid
WHERE t1.id BETWEEN 10 AND 100
ORDER BY t1.modifyDate DESC";
$command = $connection->createCommand($sql);
$dataReader = $command->query();
$result = $dataReader->readAll();
Internal:
$command=createCommand($query)
Note: $command is a CDbCommand
|- $dataReader = query()
Note: $dataReader is a CDbDataReader
|- CDBDataReader->readAll() returns array()
Showing posts with label PHP. Show all posts
Showing posts with label PHP. Show all posts
Monday, April 2, 2012
Sunday, April 1, 2012
PHP Yii ActiveRecord FindAllBySql()
Definition:
public array findAllBySql(string $sql, array $params=array ( ))
(refer http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllBySql-detail)
Explanation:
Find all active records using specified SQL statement
Example:
1. $model = MyModel::model()->findAllBySql('SELECT colA, colB FROM any_table');
2. $model = MyModel::model()->findAllBySql($sqlString);
3. $model = MyModel::model()->findAllBySql('SELECT * FROM any_table WHERE colA=:param', array(':param'=>$value));
Internal:
findAllBySql($sql, $param)
|-$command = createSqlCommand($sql,$params)
Note: $command is a CDbCommand
|-populateRecords($command->queryAll())
public array findAllBySql(string $sql, array $params=array ( ))
(refer http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllBySql-detail)
Explanation:
Find all active records using specified SQL statement
Example:
1. $model = MyModel::model()->findAllBySql('SELECT colA, colB FROM any_table');
2. $model = MyModel::model()->findAllBySql($sqlString);
3. $model = MyModel::model()->findAllBySql('SELECT * FROM any_table WHERE colA=:param', array(':param'=>$value));
Internal:
findAllBySql($sql, $param)
|-$command = createSqlCommand($sql,$params)
Note: $command is a CDbCommand
|-populateRecords($command->queryAll())
Labels:
ActiveRecord,
FindAllBySql(),
PHP,
Yii
PHP Yii ActiveRecord FindAllByPk()
Definition:
public array findAllByPk(mixed $pk, mixed $condition='', array $params=array ( ))
(refer http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllByPk-detail)
Explanation:
Find all active records with specified primary key
$pk can be either
1. string -> single-key primary key
2. array -> single-composite-key primary key
(refer createPkCriteria in yii\framework\db\schema\CDbCommandBuilder.php)
Example:
1. $model = MyModel::model()->findAllByPk($id);
2. $model = MyModel::model()->findAllByPk(array('pkCol1'=>$col1, 'pkCol2'=>$col2));
Internal:
findAllByPk($pk, $condition, $param)
|-$criteria = createPkCriteria($this->getTableSchema(),$pk,$condition,$params,$prefix)
Note: $criteria is a CDbCriteria
|-query($criteria, TRUE)
Note: TRUE means select all active records
public array findAllByPk(mixed $pk, mixed $condition='', array $params=array ( ))
(refer http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllByPk-detail)
Explanation:
Find all active records with specified primary key
$pk can be either
1. string -> single-key primary key
2. array -> single-composite-key primary key
(refer createPkCriteria in yii\framework\db\schema\CDbCommandBuilder.php)
Example:
1. $model = MyModel::model()->findAllByPk($id);
2. $model = MyModel::model()->findAllByPk(array('pkCol1'=>$col1, 'pkCol2'=>$col2));
Internal:
findAllByPk($pk, $condition, $param)
|-$criteria = createPkCriteria($this->getTableSchema(),$pk,$condition,$params,$prefix)
Note: $criteria is a CDbCriteria
|-query($criteria, TRUE)
Note: TRUE means select all active records
Labels:
ActiveRecord,
FindAllByPk(),
PHP,
Yii
Friday, March 30, 2012
PHP Yii ActiveRecord findAllByAttributes()
Definition:
public array findAllByAttributes(array $attributes, mixed $condition='', array $params=array ( ))
(refer http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllByAttributes-detail)
Explanation:
Finds all active records that have specific attribute values
Example:
1. $model = MyModel::model()->findAllByAttributes(array('id'=>1, 'colA'='mystring'));
2. $model = MyModel::model()->findAllByAttributes(array('id'=>1, 'colA'='mystring'), "colB='mystring2'");
3. $model = MyModel::model()->findAllByAttributes(array('id'=>1, 'colA'='mystring'), "colB=:param", array(":param"=>'mystring2'));
Internal:
findAllByAttributes($attribute, $condition, $param)
|-$criteria = createColumnCriteria($this->getTableSchema(), $attributes, $condition, $param, $prefix)
Note: $criteria is a CDbCriteria
$prefix is defaulted to NULL. When calling findAllByAttributes, this function will not pass in $prefix. Therefore, in this case, $prefix is always NULL.
|-query($criteria, TRUE)
public array findAllByAttributes(array $attributes, mixed $condition='', array $params=array ( ))
(refer http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllByAttributes-detail)
Explanation:
Finds all active records that have specific attribute values
Example:
1. $model = MyModel::model()->findAllByAttributes(array('id'=>1, 'colA'='mystring'));
2. $model = MyModel::model()->findAllByAttributes(array('id'=>1, 'colA'='mystring'), "colB='mystring2'");
3. $model = MyModel::model()->findAllByAttributes(array('id'=>1, 'colA'='mystring'), "colB=:param", array(":param"=>'mystring2'));
Internal:
findAllByAttributes($attribute, $condition, $param)
|-$criteria = createColumnCriteria($this->getTableSchema(), $attributes, $condition, $param, $prefix)
Note: $criteria is a CDbCriteria
$prefix is defaulted to NULL. When calling findAllByAttributes, this function will not pass in $prefix. Therefore, in this case, $prefix is always NULL.
|-query($criteria, TRUE)
Labels:
ActiveRecord,
findAllByAttributes,
PHP,
Yii
Thursday, March 29, 2012
PHP Yii ActiveRecord FindAll()
Definition:
public array findAll(mixed $condition='', array $params=array ( ))
(refer http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAll-detail)
Explanation:
Find all active records that satisfy specific conditions
findAll() returns array instead of CAtiveRecord
Example:
1. $model = MyModel::model()->findAll("id=1");
Internal:
public array findAll(mixed $condition='', array $params=array ( ))
(refer http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAll-detail)
Explanation:
Find all active records that satisfy specific conditions
findAll() returns array instead of CAtiveRecord
Example:
1. $model = MyModel::model()->findAll("id=1");
Internal:
please refer find() for explanation of $condition.
findAll($condition, $param)
|-$criteria = createCriteria($condition, $param)
> Note: $criteria is a CDbCriteria
|-query($criteria, TRUE)
Note: TRUE has been passed in so that system will retrieve all active records
(refer yii\framework\db\ar\CActiveRecord.php)
Tuesday, March 27, 2012
PHP Yii ActiveRecord Find()
Definition:
public CActiveRecord find(mixed $condition='', array $params=array ( ))
Explanation:
Find a single active record with specified conditions
Always return first record in the result set
$condition can be either
1. array
2. CDbCriteria
3. string
When $condition is an array, CDbCriteria class will map each key to predefined field name. Below is a list of predefined field name:
a. $select [default = '*']
b. $distinct [default = FALSE]
c. $condition [default = '']
d. $param [default = array()]
e. $limit [default = -1]
f. $offset [default = -1]
g. $order [default = '']
h. $group [default = '']
i. $join [default = '']
j. $having [default = '']
k. $with - alias of the table name [default = 't']
l. others - $alias, $together, $index, and $scopes
l. others - $alias, $together, $index, and $scopes
When $condition is a string, system will map it to CDbCriteria->$condition (item c above)
Example:
1. $model = MyModel::model()->find("id=1");
2. $model = MyModel::model()->find("id={$id}");
3. $model = MyModel::model()->find("value='mystring'");
4. $model = MyModel::model()->find("value='{$mystring}'");
5. $model = MyModel::model()->find("id=1 ORDER BY colA ASC");
6. $model = MyModel::model()->find("id=:param", array(":param"=>1));
7. $model = MyModel::model()->find("id=:param1 AND colA=:param2", array(":param1"=>1, ":param2"=>'mystring'));
8. $model = MyModel::model()->find(array('select'=>'colA', 'condition'=>'id=1', 'order'=>'colB DESC'));
8. $model = MyModel::model()->find(array('select'=>'colA', 'condition'=>'id=1', 'order'=>'colB DESC'));
Internal:
find($condition, $param)
|-$criteria = createCriteria($condition, $param)
Note: $criteria is a CDbCriteria
|-query($criteria, FALSE)
Note: FALSE means add "LIMIT 1" to SELECT statement
(refer yii\framework\db\ar\CActiveRecord.php)
Subscribe to:
Comments (Atom)