gpt4 book ai didi

php - Symfony 2.7 EntityType -> StartDateTime 和 EndDateTime 之间的 QueryBuilder 或 null

转载 作者:行者123 更新时间:2023-11-29 10:47:48 24 4
gpt4 key购买 nike

如何只选择可用的商店?我的实体有一个 startDateTime 和一个 endDateTime。这两个字段都有 nullable=true。

如果 startDateTime 为 null,则不得考虑。endDateTime 也是如此。

它尝试此操作,但它仅选择具有以下开始和结束日期的商店:

$builder->add(
'firstStoreChoice',
EntityType::class,
[
'class' => 'MyBundle\Entity\Store',
'property' => 'name',
'choice_value' => 'id',
'attr' => ['data-init' => 'select2', 'data-select2-width' => '100%'],
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('s')
->where('s.startDateTime is null')
->orWhere('s.startDateTime > :now')
->andWhere('s.endDateTime is null')
->orWhere('s.endDateTime < :now')
->setParameters(['now' => new \DateTime()]);
},
]
);

商店 1:开始时间: 2017-05-19 09:17:02结束于:2017-05-19 09:17:02

商店 2:开始: 2017-02-01 13:53:00结束于:2017-02-02 13:53:00

这些商店不可用,因为结束日期已过去。今天是 2017-05-30 09:39:00。

有人可以把我推向正确的方向吗?

最佳答案

你必须嵌套你的条件:

$qb = $er->createQueryBuilder('s');

return $qb
->where(
$qb->expr()->orX(
$qb->expr()->lt('s.StartDateTime', 'CURRENT_TIMESTAMP()'),
$qb->expr()->isNull('s.StartDateTime')
)
)
->andWhere(
$qb->expr()->orX(
$qb->expr()->gt('s.EndDateTime', 'CURRENT_TIMESTAMP()'),
$qb->expr()->isNull('s.EndDateTime')
)
);

关于php - Symfony 2.7 EntityType -> StartDateTime 和 EndDateTime 之间的 QueryBuilder 或 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44256351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com