Как Произвести Запрос При Помощи Передачи Cdbcriteria

Доброго времени суток.

У меня по работе встала задача по поиску.

Сделал на AR и уткнулся в проблему что при использовании чистого AR у меня долго начинает работать выдача результатов.

Запрос сформированный AR отрабатывает за 0,00055 с.

А генерация страницы - 14 секунд, может быть и 45 и даже сервер таймаут схватывает.

Скорость зависит напрямую от количества параметров, что в целом логично.

Я так понимаю загвоздка заключается в том что AR когда разбирает данные и распихивает их по объектам, у него это занимает много времени, отсюда и беды.

Первое что я попробыал было:




$db = \Yii::app()->getDbConnection();


/**

 * @var CDbCriteria $myModelCriteria

 */


$db->createCommand($myModelCriteria)->query();



Выдаёт что нету метода execute.

Я это хочу сделать для того чтобы попробывать обработать параметры в массиве.

Покажите чуть больше кода и поясните что вы пытаетесь достичь.

Хотите оперировать РНР массивами с тысячами элементами?

Почитал мануал, разобрался.

Это делается не трудно, самая загвоздка отслежка связей.

На тот момент когда я писал пост соображения были совсем другие.

Проблему с поиском решил.

Если по теме то использовать такой способ формирования запроса можно так.




$db = \Yii::app()->db;


$builder = $db->getCommandBuilder();


$criteria = new CDbCriteria();

$criteria->addInCondition("id", array(1,2,3));


$command = $builder->createFindCommand("mytable", $criteria);


$command->queryAll();



Как-то так. Вариации может быть много главное использовать правильные объекты.