php – 在Doctrine DBAL Query Builder上缺少insert()方法
作者:互联网
我觉得我有一个时刻,我在这里缺少一些小东西;我一直在使用Dotrine DBAL 2.2.x / 2.3.x上的QueryBuilder组件上的insert()方法时遇到问题.
我做了一些调查,这是QueryBuilder page from the DBAL Documantation的片段
The \Doctrine\DBAL\Query\QueryBuilder supports building SELECT, INSERT, UPDATE and DELETE queries. Which sort of query you are building depends on the methods you are using.
它继续进一步解释代码示例,这样我可以简单地做:
$builder = $connection->createQueryBuilder();
$result = $builder
->insert('table_name')
// ...
在“插入模式”下使用查询构建器.除非我这样做,否则我会在PHP上收到投诉:
Fatal error: Call to undefined method Doctrine\DBAL\Query\QueryBuilder::insert()
关于The QueryBuilder.php Source Code的进一步检查
我没有看到任何方法insert(…)的引用,没有继承它的类,没有任何特性添加到可以公开插入机制的QueryBuilder.另外我在顶部看到这个:
/* The query types. */
const SELECT = 0;
const DELETE = 1;
const UPDATE = 2;
没有插入查询类型;然而,有一个有趣的方法注释execute():
/**
* Execute this query using the bound parameters and their types.
*
* Uses {@see Connection::executeQuery} for select statements and {@see Connection::executeUpdate}
* for insert, update and delete statements.
*
* @return mixed
*/
底线:
这是一个包含100个维护者的大型项目,我更有可能在这里找到我的解释嫌疑,而不是在许多版本上如此根本的搞砸,但我不能为我的生活找出我所缺少的东西.请帮我看看显而易见的.
解决方法:
这取决于您的版本.自v2.5.0-BETA3以来已添加插入.
Viz https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Query/QueryBuilder.php#L563
和commit
您可以决定更新包版本或check this alternative solution
标签:php,query-builder,doctrine-orm,dbal 来源: https://codeday.me/bug/20190624/1277570.html