gpt4 book ai didi

php - Doctrine QueryBuilder 未定义方法 getQuery()

转载 作者:行者123 更新时间:2023-12-05 01:17:31 27 4
gpt4 key购买 nike

当我执行方法 getMachineSettings 时出现错误:

Fatal error: Uncaught Error: Call to undefined method Doctrine\DBAL\Query\QueryBuilder::getQuery()

$data 是一个关联数组:

$data['param'] = 'ip';
$data['value'] = '192.168.240.10';

如果我用 execute() 替换 getQuery()->getResult()$result 包含查询:

SELECT * FROM machine WHERE ip = ?

public function __construct()
{

try
{

$dbconf = parse_ini_file('.htLogin.ini');
$config = new \Doctrine\DBAL\Configuration();

$connectionParams = array
(
'dbname' => $dbconf['infoDb'],
'user' => $dbconf['infoLogin'],
'password' => $dbconf['infoPw'],
'host' => $dbconf['infoHost'],
'driver' => 'pdo_mysql',
'charset' => 'utf8',
'driverOptions' => array
(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
)

);
$this->mysql = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);

}
catch(PDOException $e)
{

echo $e -> getMessage();

}


public function getMachineSettings($data)
{
$qb = $this->mysql->createQueryBuilder();
$qb->SELECT('*')
->FROM('`machine`')
->WHERE($data['param'] . ' = :value');
$qb->setParameters(
array
(
':value' => $data['value']
)
);

$results = $qb->getQuery()->getResult();


var_dump($result);

return $result;

}

您知道为什么无法识别方法 getQuery() 吗?

最佳答案

做事

$results = $qb->execute()->fetchAll();

忽略以下内容 - 它假定您使用 Doctrine ORM,而您没有

您遇到的问题是您使用的 QueryBuilder 对象不是 Doctrine ORM QueryBuilder - 它是 DBAL QueryBuilder。

您需要使用 EntityManager 中的 createQueryBuilder 函数。

/** @var Doctrine\ORM\QueryBuilder $qb */
$qb = $this->entityManager->createQueryBuilder();

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

$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;
}

那么你知道函数需要2个参数才能运行,传递一个数组并不能让你立即看到函数需要什么

关于php - Doctrine QueryBuilder 未定义方法 getQuery(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49770925/

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