Yii Framework Forum: Как Произвести Запрос При Помощи Передачи Cdbcriteria - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

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

#1 User is offline   Alegz 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 23-July 12

Posted 15 November 2012 - 09:30 AM

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

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

Сделал на AR и уткнулся в проблему что при использовании чистого AR у меня долго начинает работать выдача результатов.
Запрос сформированный AR отрабатывает за 0,00055 с.
А генерация страницы - 14 секунд, может быть и 45 и даже сервер таймаут схватывает.
Скорость зависит напрямую от количества параметров, что в целом логично.

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

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

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

/**
 * @var CDbCriteria $myModelCriteria
 */

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


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

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

#2 User is offline   Charger 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 315
  • Joined: 03-September 11

Posted 16 November 2012 - 02:01 AM

Покажите чуть больше кода и поясните что вы пытаетесь достичь.
Хотите оперировать РНР массивами с тысячами элементами?
0

#3 User is offline   Alegz 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 23-July 12

Posted 29 November 2012 - 12:44 PM

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

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

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

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

$builder = $db->getCommandBuilder();

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

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

$command->queryAll();


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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users