CakePHP, как получить данные HABTM с условиями более эффективно

У меня есть следующий запрос MySQL в CakePHP 2.x, он работает, но это занимает очень много времени, если я удаляю «соединения», он работает быстро, но ‘Tag.tags LIKE’ => ‘%’. $ Busqueda. ‘%’ Часть не будет работать, какие-нибудь идеи о том, как я могу заставить это работать быстрее? лучше сказать: как я могу удалить объединения и все еще иметь возможность поиска по таблице тегов?
Его часть поисковой системы в интранете
заранее спасибо

$year = $this->request->query['year'];
$years = "year(`Saliente`.`fecha_rem`) = ".$year;
$this->loadModel('Saliente');
$this->Saliente->recursive = -1;
$busqueda_c = mysql_escape_string($busqueda);
$this->Saliente->bindModel(
array('hasAndBelongsToMany' => array(
'Tag' => array(
'className' => 'Tag',
'jointable' => 'salientes_tags',
'foreignKey' => 'saliente_id',
'associationForeignKey' => 'tag_id'
)
)
)
);
$options = array('joins' => array(
array('table' => 'salientes_tags',
'alias' => 'SalientesTag',
'type' => 'left',
'conditions' => array(
'Saliente.id = SalientesTag.saliente_id'
)
),
array('table' => 'tags',
'alias' => 'Tag',
'type' => 'left',
'conditions' => array(
'SalientesTag.tag_id = Tag.id'
)
)
), 'maxLimit' => 300, 'limit' => 10, 'contain' => array('Tag' => array('fields' => array('Tag.tags') )),
'fields' => array('Saliente.id', 'Saliente.usuario_id', 'Saliente.codigo', 'Saliente.asunto', 'Saliente.observacion',
'MATCH(Saliente.asunto, Saliente.observacion) AGAINST("+'.$busqueda_c.'*") AS relevance'), 'countField' => 'DISTINCT Saliente.id',
'conditions' => array($years, 'OR' => array("MATCH(Saliente.asunto, Saliente.observacion) AGAINST('+".$busqueda_c."*')",
'Saliente.codigo LIKE' => '%'.$busqueda.'%', 'Tag.tags LIKE' => '%'.$busqueda.'%' )),
'order' => 'relevance DESC,
fecha_rem DESC', 'group' => 'Saliente.id');

$this->Paginator->settings = $options;
$resultado = $this->Paginator->paginate('Saliente');
$this->set('resultado', $resultado);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector