CakePHP Архитектурный Вопрос - Написание пользовательского поиска для модели - PullRequest
1 голос
/ 24 февраля 2011

Я начал использовать CakePHP 3 дня назад, и сейчас я нахожусь в процессе решения проблемы шипов. Я изучаю это довольно быстро, но некоторые функции еще не ясны в моей голове.

Я искал несколько советов о том, что делать дальше.

Я пишу поиск, где пользователь может вводить данные в многочисленные поля (10+) для преподавателей. Они могут вводить соответствующую информацию, такую ​​как имя, фамилия или отделы / отделы, и все они правильно связаны в модели.

Я ищу написать запрос, который использует операторы LIKE, и выполнить поиск. Я думал о взломе модели факультета, чтобы начать писать или расширять функцию поиска, которая может выполнять поиск?

Это правильный подход? Должен ли я написать пользовательскую функцию для поиска? Есть ли другой способ сделать это?

Я намеренно пропустил много деталей о своем проекте, потому что сейчас все еще изучаю фреймворк и хочу услышать лучшие варианты - я не хочу, чтобы меня ограничивали дизайном. Но в основном у меня есть форма с несколькими полями, такими как имя, дата рождения, членство на факультете, и мне нужен пользователь, чтобы иметь возможность вводить информацию и осуществлять поиск на моем факультете.

Если бы кто-нибудь мог указать мне правильное направление, это было бы очень признательно. Я много читаю и не знаю, как поступить.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2011

То, что я пытался сделать, действительно просто. Это вообще не архитектурный вопрос, мне просто нужно было почитать о моделях, и я ответил на свой вопрос.

В частности, мне понадобилась помощь со сложными условиями поиска, и в книге CakePHP есть раздел на эту тему:

http://book.cakephp.org/view/1030/Complex-Find-Conditions#!/view/1030/Complex-Find-Conditions

0 голосов
/ 25 февраля 2011

Вот как я справляюсь с поиском.Если у вас есть только одно текстовое поле, которое может принимать данные для любого поля, вместо $ this-> data ['Faculty'], просматривайте массив полей, по которым вы хотите выполнять поиск.

foreach ($this->data['Faculty'] as $field => $value){
          $conditions[$field . ' LIKE'] => '%' . $value . '%';
}
$results = $this->Faculty->find('all',
    array(
        'conditions'=>array('OR'=>$conditions), //or use AND here depending on need
    )
);
$this->set('results',$results);
0 голосов
/ 24 февраля 2011

Есть много способов справиться с этим с Cake, но хорошая новость в том, что вам, вероятно, не придется.Существует множество поисковых дополнений для Cake, которые значительно облегчают процесс обдумывания.

Возможно, вы захотите попробовать "Поискбельный плагин" Нила Крука для Cake.

Плагин Нейла довольно солидный, а его пост на эту тему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...