Kohana 2.3.4 ORM和Regex数据库方法

时间:2010-11-08 20:31:59

标签: php regex orm kohana

我正在尝试使用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();

Kohana的文档指出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 :(得分:0)

通过一些进一步的研究,试验和错误,我找到了答案。 Kohana的数据库方法不使用普通的正则表达式,而是使用MySql的版本。在我的情况下,我正在用短语搜索单词并使用以下内容(我使用“鞋子”作为我的例子)

[[:<:]]shoe

会找到以鞋子开头的单词

shoe[[:>:]]

会找到以鞋子结尾的单词

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

只能找到鞋子的话

最终为我工作的代码是:

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

希望这有助于其他人。

相关问题