gpt4 book ai didi

php - 如何使用 doctrine 中的 querybuilder 来测试数据库中是否已经设置了至少两个给定值之一

转载 作者:行者123 更新时间:2023-11-29 07:25:52 25 4
gpt4 key购买 nike

我有一个名为 Code 的表, 它有一个 id , code和一个 creationDate .

假设我有一个对象,我想将其插入到这个表中,但我想检查是否已经有一个对象具有相同的 id设置或相同code .

我已经发现用 findBy() 不可能完成这个任务或 findByOne()而且我很可能必须使用 QueryBuilder。

虽然有几件事我无法理解。我真的很惊讶我在整个网络上找不到答案......

首先,这是我当前的查询代码:

$query = $this->entityManager->createQueryBuilder()->select('id', 'X')->from('Code', 'X')->where('id = 3');

如您所见,我写了两次“X”。有人可以告诉我那是什么吗?因为我必须以某种方式设置它。 from()方法至少需要两个参数。我读到它是某种别名,但为什么我需要声明它,它有什么用途?此外,我几乎 100% 确定也存在语法错误。 (不幸的是,我的 IDE 没有标记语法错误或类似错误,但这是不同的。)如果有人能花几分钟向我解释一下,我将不胜感激。

此外,一旦我声明了我的 $query ,我必须执行它还是什么?我真的不知道这是怎么回事。对不起,我真的为没有得到这个最简单的东西而感到愚蠢......

非常感谢。

最佳答案

参见 Doctrine - The QueryBuilder首先,您需要在创建查询后执行 ->getQuery()->getResult()。这将为您带来结果。

但是您也可以使用它来仅返回一个计数,因为您只想知道是否存在“冲突”记录。

此外,由于您只包含 1 个实体,因此无需声明别名。

编辑:在OP评论后添加参数。

$result = $this->entityManager->createQueryBuilder()
->select('c')
->from(CodeEntity::class, 'c')
// Either go with 2 where clauses
->where('c.id = :codeId')
->orWhere('c.code = :codeCode')
// Or you could go with a one-liner for the where clause
//->where('c.id = :codeId or c.code = :codeCode')
->setParameters([
'codeId' => $code->getId(),
'couponCode' => $code->getCodeCode()
])
->getQuery()
->getScalarResult()

关于php - 如何使用 doctrine 中的 querybuilder 来测试数据库中是否已经设置了至少两个给定值之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769635/

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