alm /querymap
受到Django的QuerySet启发的Doctrine查询机制
v1.1.0
2016-06-15 14:05 UTC
Requires
- php: >=5.5.9
- doctrine/orm: ^2.5
- symfony/config: 3.1.*
- symfony/dependency-injection: 3.1.*
- symfony/finder: 3.1.*
- symfony/http-kernel: 3.1.*
- symfony/yaml: 3.1.*
Requires (Dev)
- php: >=5.5.9
- doctrine/orm: ^2.5
- symfony/config: 3.1.*
- symfony/dependency-injection: 3.1.*
- symfony/finder: 3.1.*
- symfony/http-kernel: 3.1.*
- symfony/yaml: 3.1.*
This package is not auto-updated.
Last update: 2024-09-14 19:36:39 UTC
README
提供一个简化的接口,用于使用Doctrine构建查询。
示例用法
/** @var \QueryMap\Bundle\QueryMapBundle\Service\QueryMapFactoryService $qmFactory */
$qmFactory = $this->container->get('querymap.factory');
$qm = $qmFactory->create(Team::class, 't');
/** @var $query \Doctrine\ORM\QueryBuilder */
$query = $qm->query([
'points__gt' => '6',
'continent' => 'Europe'
]);
echo $query->getDQL();
//SELECT t FROM FootballBundle\Entity\Team t
//WHERE (t.points >= 6) AND (t.continent = 'Europe')
安装
编辑你的composer.json,将包包含到你的项目中,并运行composer update alm/querymap
require {
...
"alm/querymap": "v1.1.*"
...
}
在AppKernel.php中的$bundles数组中包含QueryMap包,并提供给其构造函数。
$bundles = [
...
new QueryMap\Bundle\QueryMapBundle\QueryMapBundle($this),
...
]
接下来,在你的config.yml文件中,指定映射yml文件的路径 - 如果你使用此功能 - 如下所示
query_map:
paths:
- '@FooBundle/Resources/querymap'
- '@BarBundle/Resources/querymap'
对于你想要使用QueryMap过滤的实体,在实体头部添加@QM\Map
注解。
use Doctrine\ORM\Mapping as ORM;
use QueryMap\Contrib\Annotation\DoctrineAnnotationMapping as QM;
/**
* @ORM\Entity(repositoryClass=\MyBundle\Repository\TeamRepository)
* ...
* @QM\Map
*/
现在,你可以根据在该实体中定义的@ORM\Column、@ORM\ManyToOne或@ORM\OneToOne的所有属性进行过滤。