Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Alexander Гость цитировать
|
Добавлено: 12 Дек 2007 19:54:43 Заголовок сообщения: Поиск по сайту |
|
|
Подскажите, как правильно организовать поиск?
У меня только одна идея, подгружать можели и делать поиск, что-то вроде
$this->loadModel('Model1');
$this->Model1->...
...
$this->loadModel('Model2');
$this->Model2->...
...
Но здесь другой вопрос, как организовать поиск по типу 'WHERE text LIKE %exp%' ? |
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 12 Дек 2007 22:21:02 Заголовок сообщения: |
|
|
Вместо танцев с loadModel
Код: |
var $uses = array('Model1', 'Model2');
|
по поиску
Код: |
$condition = array('or' => array(
array('Model1.text' => 'LIKE %exp%'),
array('Model1.text2' => 'LIKE %exp%'),
));
$this->Model1->findAll($condition);
|
Код живой, только слегка модифицированный
BTW RTFM - в раздели про модели это должно быть
Попути - код поиска лучше в модель перенести сразу
Попути2 - можно сделать behavior для поиска по текстовым полям )) |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 06 Мар 2008 21:56:13 Заголовок сообщения: |
|
|
http://groups.google.com/group/cake-php/msg/2448e3291953aec8
Вот полезная ссылка. Однако если в одной из моделей возникают "LEFT JOIN". Начинаются небольшие непонятки ибо в запросе уже будут фигурировать как Model1 так и Ассоциируемая с ней Model2
(я говорю о ссылке приведенной мною)
И, похоже, в примере, который привёл КРОТОВ. Если есть ассоциации, то запрос
$condition = array('or' => array(
array('Post.body' => 'LIKE %exp%'),
array('Post.title' => 'LIKE %exp%'),
));
$results = $this->Post->findAll($conditions);
Приводит к ошибке:
SELECT `Post`... FROM `posts` AS `Post` LEFT JOIN `answers` AS `Answer` ON (`Answer`.`post_id` = `Post`.`id`) WHERE body LIKE '%exp%' OR ...
1052: Column 'body' in where clause is ambiguous
ЗАвтра, на свежую голову буду ещё ковырять |
|
Вернуться к началу |
|
|
|