индекс силы трюма в модели

Я использую метод find, который использует «FORCE INDEX» в модели. Модель прекрасна, но когда я делаю тест для этого метода поиска, произошла ошибка SQL. Я использую test / fixture и определяю схему и данные DB. В тесте / приборе я не знаю, как определить индекс. Поэтому для теста БД не было индекса. Было бы здорово, если бы вы могли показать мне, как определить индекс в test / fixture.

В модели …

$this->Model->find('all', array( 'fields' => array('foo'), 'conditions' => array('foo' => foo), 'joins' => array('FORCE INDEX(foo)'), ); 

В тесте / приспособлении

 var $fields = array( 'id' => .... 'foo' => .... 'created' => .... 'modified' => .... ); 

Solutions Collecting From Web of "индекс силы трюма в модели"

я думаю, что я помогу u:

http://cakephp.1045679.n5.nabble.com/Using-USE-INDEX-or-FORCE-INDEX-in-Model-gt-find-amp-relationships-td3281552.html#a3300205

«Создание собственного источника данных (в моем случае расширение DboMysql) имеет два задания:

его метод считывания переопределений и проверки, если модель установила поле useIndex

  if (!empty($model->useIndex)) { $this->useIndex = $model->useIndex; } return parent::read($model, $queryData); 

и он переопределяет метод renderStatement, и если было задано поле $ model-> useIndex, добавив его значение после псевдонима таблицы в select statement.

 if (strtolower($type) == 'select' && !empty($this->useIndex)) { $res = "SELECT {$fields} FROM {$table} {$alias} {$this->useIndex} {$joins} {$conditions} {$group} {$order} {$limit}"; } else { $res = parent::renderStatement($type, $data); } $this->useIndex = null; return $res; 

2- Настройка поля моделирования модели содержит sql часть индекса использования, индекс силы или индекс игнорирования

например, в контроллере:

 $this->Task->useIndex = 'IGNORE INDEX(ind_usr_id)'; $this->paginate = array( 'fields' => array('Task.id', 'Task.name','User.id', 'User.name'), 'order' => 'Task.id', 'limit' => 10 ); $this->paginate('Task'); 

"