如何在学说 2 实体的存储库中使用复杂标准?

2024-08-10php开发问题
0

本文介绍了如何在学说 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"expects 是一个数组,所有示例仅将其视为简单标准(例如,array('name' => 'billy')"将选择 name 列中具有 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"方法更适合快速抓取对象.我不知道您的实体名称或它们的存储位置.在您的节日存储库中可能是这样的功能.

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 实体的存储库中使用复杂标准?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17