我觉得我有一个在这里错过一些小东西的时刻;我在Dotrine DBAL 2.2.x / 2.3.x上的insert()
组件上使用QueryBuilder
方法时遇到了问题。
我做了一些调查,这里是QueryBuilder page from the DBAL Documantation
的摘录\ Doctrine \ DBAL \ Query \ QueryBuilder支持构建SELECT,INSERT,UPDATE和DELETE查询。您正在构建哪种查询取决于您使用的方法。
它继续进一步解释代码示例,这样我就可以做到:
$builder = $connection->createQueryBuilder();
$result = $builder
->insert('table_name')
// ...
在插入模式中使用查询构建器。除非我这样做,否则我会从PHP收到投诉:
致命错误:调用未定义的方法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名维护者的大型项目,我更有可能在这里找到我的解释嫌疑人,而不是在许多版本上如此根本的搞砸,但我不能为我的生活图我失踪了什么。 请帮我看一下显而易见的事。
答案 0 :(得分:4)
这取决于您的版本。自v2.5.0-BETA3以来已添加插入。
Viz https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Query/QueryBuilder.php#L563 和commit
您可以决定更新软件包版本或check this alternative solution