MyTetra Share
Делитесь знаниями!
Yii: Запрос к базе данных с дополнительными параметрами (сортировка, limit и прочее) - что такое conditions, что должен содержать params
Время создания: 05.10.2014 14:02
Текстовые метки: Yii, Active Records, conditions, params
Раздел: Компьютер - Программирование - Язык PHP - Yii
Запись: xintrea/mytetra_syncro/master/base/1412503337wru0lpg1lf/text.html на raw.github.com

Вариант 1

Запрос с доп. параметрами (сортировка, limit и прочее)

$users = User::model()->findAll(array(

'condition'=>"role=:role",

'params'=>array(":role"=>$role),

'order'=>'fio',

'limit'=>'10',

'offset'=>'15'));

На входе в функцию findAll подается ассоциативный массив со следующими ключами:

  • condition - условие отбора. По сути - часть sql-предложения после where. Может содержать логические операторы, подзапросы, вложенные условия и т.п.
  • params - массив параметр, используемых в запросе. Если в запросе (condition) нужно что-то сравнить с внешней переменной, то самый правильный способ (с точки зрения безопасности и производительности) в запросе вставить вместо переменной метку (например, :role), а в params указать значение (например, 'params'=>array(":role"=>$role))
  • order - порядок сортировки
  • limit - число элементов
  • offset - сдвиг (например, отображать начиная с 15-го)

На выходе $users - массив объектов.

Вариант 2

public CActiveRecord[] findAll(mixed $condition='', array $params=array ( ))

$condition

mixed

query condition or criteria. If a string, it is treated as query condition (the WHERE clause); If an array, it is treated as the initial values for constructing a CDbCriteria object; Otherwise, it should be an instance of CDbCriteria.

$params

array

parameters to be bound to an SQL statement. This is only used when the first parameter is a string (query condition). In other cases, please use CDbCriteria::params to set parameters.

{return}

CActiveRecord

the record found. Null if no record is found.

Например, запрос с сортировкой будет выглядеть так:

$users = User::model()->findAll(array('order'=>'fio'));

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования