Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Поиск по сайту

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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

ЗАвтра, на свежую голову буду ещё ковырять Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru