【发布时间】:2021-06-04 11:35:02
【问题描述】:
我想从 bdd 获取数据,就像我一直做的那样,我创建了一个方法来为我的请求添加特定条件,但是在我尝试了很多其他事情之后你会看到。
这里是请求:
/**
* @return CongesEchangeRtt[] Returns an array of CongesEchangeRtt objects
*/
public function findByDate($agents, $date) {
return $this->createQueryBuilder('c')
->andWhere('c.eLogin IN (:val)')
->andWhere('c.eDateJour LIKE :date')
->setParameter('val', $agents)
->setParameter('date', $date . "%")
->getQuery()
->getResult()
;
}
这个请求必须返回所有符合条件的数据,对吧? 但是我们错了,大声笑,IDK,为什么但这不是它的作用,实际上我在pur SQL中的“phpMyAdmin”中尝试过它并且它起作用了,所以我认为我的问题来自symfony,无论如何这个请求返回给我每个用户(代理)只有一个对象。我得到的数据是正确的,但我没有得到与每个用户匹配的每一个数据......我首先在这里失去了理智,但这只是开始。
在那之后,我尝试了一个简单的“findBy”方法,参数中包含用户数组,我得到了我数组中每个用户的每个日期,但这是为了掩饰,我只想得到那些日期正确的人,我的意思是那些谁在我前面显示的“实际”月份,“实际”是相对的。 所以我用每月的每个日期生成一个数组并尝试了这个:
findBy(["login" => $myUserArray, "dates" => $myArrayOfDates]);
你现在我得到了什么?有什么奇怪的!对! 重复的内容......但是有些不在bdd中,我的意思是,这里是一个例子:
我在这张表中有很多数据/行,如下所示:
login|date(vacation)|presence|absence|comment
所以:
"xxxx.xxxx"|"2021-05-14"|etc
"xxxx.xxxxx"|"2021-05-24"|etc
我在我的 PHP 中得到了这个:
"xxxx.xxxx"|"2021-05-14"|etc
"xxxx.xxxx"|"2021-05-14"|etc
我有正确数量的数据,但它们都一样...
【问题讨论】:
-
在日期列中使用 LIKE 有点不寻常。通常,您会使用日期特定的 sql 函数,这些函数在理论上可能需要也可能不需要一些自定义。
-
感谢您的回答,我正在寻找有关您所谈论内容的信息,以找出答案,感谢您的建议,唯一的问题不是我在日期上使用 LIKE ,但最重要的是请求的返回给了我完全异常的数据,我需要解释
标签: sql doctrine-orm doctrine