jrk / levenshtein-bundle
为 symfony2 和 doctrine 的 Levenshtein 函数包
v1.1.1
2018-05-21 16:49 UTC
Requires
- php: >=5.3.2
- doctrine/dbal: *
- doctrine/orm: *
- symfony/framework-bundle: *
This package is auto-updated.
Last update: 2024-09-04 05:29:49 UTC
README
配置
JrkLevenshteinBundle 需要 Symfony 和 Doctrine
- 使用 composer
将 jrk/levenshtein-bundle 添加为项目 composer.json 文件中的依赖项
{
"require": {
"jrk/levenshtein-bundle": "dev-master"
}
}
更新 composer
php composer update
or
php composer.phar update
- 将 JrkLevenshteinBundle 添加到应用内核中
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Jrk\LevenshteinBundle\JrkLevenshteinBundle(), ); }
- Yml 配置
# app/config/config.yml doctrine: orm: entity_managers: default: dql: numeric_functions: levenshtein: Jrk\LevenshteinBundle\ORM\Doctrine\DQL\LevenshteinFunction levenshtein_ratio: Jrk\LevenshteinBundle\ORM\Doctrine\DQL\LevenshteinRatioFunction
或者如果您使用的是简短配置而非完整配置
#app/config/config.yml doctrine: orm: # if you have these lines auto_generate_proxy_classes: '%kernel.debug%' naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true # you've to directly put the dql lines, see below dql: numeric_functions: levenshtein: Jrk\LevenshteinBundle\ORM\Doctrine\DQL\LevenshteinFunction levenshtein_ratio: Jrk\LevenshteinBundle\ORM\Doctrine\DQL\LevenshteinRatioFunction
- 控制台使用
安装函数
php app/console jrk:levenshtein:install
该控制台行将在您的数据库中安装 2 个函数。您可以通过在 phpmyadmin sql 提示符或您喜欢的 mysql 客户端中输入来检查这些函数
SHOW FUNCTION STATUS;
用法
- 使用 QueryBuilder
<?php public function getUserByFirstname($tolerance = 3) { $queryBuilder = $this->_em->createQueryBuilder() ->select('user') ->from('FooBundle:User','user') ->where('LEVENSHTEIN(user.firstname,:searchString) <= :tolerance') ->setParameter('searchString',$searchString) ->setParameter('tolerance',$tolerance) ; return $queryBuilder->getQuery()->getResult(); } ?>
- 使用 DQL
<?php public function getUserByFirstname($tolerance = 3) { $dqlString = ' SELECT user FROM FooBundle:User user WHERE LEVENSHTEIN(user.firstname,:searchString) <= :tolerance '; $query = $this->_em->createQuery($dqlString) ->setParameter('searchString',$searchString) ->setParameter('tolerance',$tolerance) ; return $query->getResult(); } ?>