Php 条令QueryBuilder未定义方法getQuery()

Php 条令QueryBuilder未定义方法getQuery(),php,doctrine-orm,Php,Doctrine Orm,当我执行getMachineSettings方法时,我得到一个错误: 致命错误:未捕获错误:调用未定义的方法条令\DBAL\Query\QueryBuilder::getQuery $data是一个关联数组: $data['param'] = 'ip'; $data['value'] = '192.168.240.10'; 如果我将getQuery->getResult替换为execute,$result包含查询: 从ip=?的计算机中选择* 你知道为什么getQuery方法不被识别吗?就这么

当我执行getMachineSettings方法时,我得到一个错误:

致命错误:未捕获错误:调用未定义的方法条令\DBAL\Query\QueryBuilder::getQuery

$data是一个关联数组:

$data['param'] = 'ip';
$data['value'] = '192.168.240.10';
如果我将getQuery->getResult替换为execute,$result包含查询:

从ip=?的计算机中选择*

你知道为什么getQuery方法不被识别吗?

就这么做吧

$results = $qb->execute()->fetchAll();
忽略以下内容-它假设您使用的是ORM原则,而您的

您遇到的问题是,您使用的QueryBuilder对象不是ORM QueryBuilder,而是DBAL QueryBuilder

您需要使用EntityManager中的createQueryBuilder函数

然后,您可以使用select/from etc方法并获得可以运行的查询结果

$qb->getQuery()->getResult()
如果我要重写你的函数,我会这样写

public function getMachineSettings(string $field, string $value)
{
    $qb = $this->entityManager->createQueryBuilder();
    $qb->select('m')
       ->from('machine')
       ->where($field.' = :value');
    $qb->setParameter('value', $value);
    $results = $qb->getQuery()->getResult();
    var_dump($result);
    return $result;
}
然后您就知道函数需要两个参数才能运行,传递数组不会让您立即看到函数需要什么

$results = $qb->execute()->fetchAll();
忽略以下内容-它假设您使用的是ORM原则,而您的

您遇到的问题是,您使用的QueryBuilder对象不是ORM QueryBuilder,而是DBAL QueryBuilder

您需要使用EntityManager中的createQueryBuilder函数

然后,您可以使用select/from etc方法并获得可以运行的查询结果

$qb->getQuery()->getResult()
如果我要重写你的函数,我会这样写

public function getMachineSettings(string $field, string $value)
{
    $qb = $this->entityManager->createQueryBuilder();
    $qb->select('m')
       ->from('machine')
       ->where($field.' = :value');
    $qb->setParameter('value', $value);
    $results = $qb->getQuery()->getResult();
    var_dump($result);
    return $result;
}

那么你就知道这个函数需要两个参数,传递数组不会让您立即看到函数需要什么

什么是$this->mysql?ManseUK-好问题:我希望看到完整的code@ManseUK我用$this->mysql@Angel115更新了我的答案-$results=$qb->execute->fetchAll;$this->mysql是什么?ManseUK-好问题:我想看看完整的code@ManseUK我用$this->mysql@Angel115更新了我的答案-$results=$qb->execute->fetchAll$结果=$qb->execute->fetchAll;工作正常。非常感谢您抽出时间来ManuseUK。$results=$qb->execute->fetchAll;工作正常。非常感谢你抽出时间来,马努塞。