Kohana 2.3.4 Метод базы данных ORM и Regex - PullRequest
0 голосов
/ 08 ноября 2010

Я пытаюсь использовать метод базы данных Kohana regex () с ORM для поиска слова.Первоначально я использовал метод like (), но результаты оказались не такими, как я хотел.По сути, мне нужно найти фразу для определенного слова.Я использовал такие регулярные регулярные выражения, как раньше, но, должно быть, я что-то не так делаю.Я безуспешно пробовал следующее:

$prod_name = ORM::factory("product")->regex("prod_name", "^" . $searchArray[$i] . "$")->find_all();

$prod_name = ORM::factory("product")->regex("prod_name", "/b" . $searchArray[$i] . "/b")->find_all();

$prod_name = ORM::factory("product")->regex("prod_name", "/\b" . $searchArray[$i] . "\b/")->find_all();

В документации Коханы говорится, что regex () работает так же, как like (), но это не так.Это прекрасно работает:

$prod_name = ORM::factory("product")->like("prod_name",$searchArray[$i])->find_all();

Как это:

$prod_name = ORM::factory("product")->like("prod_name",$searchArray[$i] . "%", FALSE)->find_all();

1 Ответ

0 голосов
/ 10 ноября 2010

Благодаря дальнейшим исследованиям, методом проб и ошибок, я нашел ответ. Метод базы данных Kohana использует не обычные регулярные выражения, а версию MySql. В моей ситуации я ищу слова во фразе и буду использовать следующее (в качестве примера я использую «башмак»)

[[:<:]]shoe

Найдет слова, начинающиеся с обуви

shoe[[:>:]]

Найдет слова, которые заканчиваются на обуви

[[:<:]]shoe[[:>:]]

Найдет только слова, которые являются обувью

Код, который закончил работать для меня:

$prod_name = ORM::factory("product")->regex("prod_name", "[[:<:]]" . $searchArray[$i])->find_all();

Надеюсь, это поможет кому-то еще.

...