How do I use a complex criteria inside a doctrine 2 entity#39;s repository?(如何在学说 2 实体的存储库中使用复杂的标准?)
问题描述
假设我有一张表格,其中包含有关节日的信息.
每个节日都有开始和结束日期.
Lets say I have a table that holds information about festivals.
Each festival has a start and end date.
我想选择在给定日期现场(发生)的所有节日.
I want to select all the festivals that are live (that happen) on a given date.
意思是,我想选择开始日期早于或在给定日期,而结束日期晚于或在同一给定日期的所有节日.
Meaning, I want to select all the festivals that their start date is before or on a given date, and that their end date is after or on a the same given date.
所以我继续使用节日实体的存储库类,并创建了一个方法来做到这一点.
但是标准参数findBy"期望是一个数组,所有示例仅将其视为一个简单的条件(例如,array('name' => 'billy')"将选择名称列中具有值 billy 的所有行),其中仅使用比较运算符.
So I went on to the repository class of the festival entity, and created a method to do just that.
But the criteria argument "findBy" expects is an array, which all the examples only treat as a simple criteria (e.g. "array('name' => 'billy')" will select all the rows that have the value billy in their name column), which uses only the comparison operator.
如何使用其他运算符,例如
How can I use other operators such as
>, <, !=, IN, NOT IN, LIKE
等等?
推荐答案
如果您需要特定的查询,则需要编写自己的查询(可能使用 DQL).我相信内置的findBy"方法更适合用于快速抓取对象,如果您的标准不那么具体.我不知道您的实体名称或它们的存储位置.可能是您的 Festival Repository 中的一个函数.
You'll need to write your own query (probably using DQL) if you want something that specific. I believe the built in "findBy" methods are more for just grabbing objects quickly if you have less specific criteria. I don't know your entity names or where they are stored. Could be something like this as a function in your Festival Repository.
public function findActiveFestivals($start, $end)
{
$qb = $this->_em->createQueryBuilder();
$qb->select('f')
->from('Festival', 'f')
->where('f.start >= :start')
->andWhere('f.end <= :end')
->setParameters(array('start' => $start, 'end' => $end));
return $qb->getQuery()->getArrayResult();
}
这篇关于如何在学说 2 实体的存储库中使用复杂的标准?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在学说 2 实体的存储库中使用复杂的标准?


基础教程推荐
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 使用 PDO 转义列名 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- HTTP 与 FTP 上传 2021-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01