我有一个在教义中运行的查询;现在它正在失败,但是以一种奇怪的方式。该查询已经使用了一年,我只是添加了几个新库并更改了一些版本,使composer.json
有点困惑。我还更新了我的Linux机器(不确定MySQL或MariaDB是否已更新)。
无论发生了什么变化(令人怀疑的是我捆绑包的Doctrine模型代码,除非它最初不是犹太洁食,而现在核心更新将其显示为损坏),查询现在返回的结果是带有正确数量的键的数组,但是,这些值以某种方式变为NULL。数组看起来就像这样,直接从var_dump复制并粘贴,例如
var_dump($query->getSql());
var_dump($results);
exit;
select GoalLabel from opt_goals where scale = 'mathematics'
array(17) { [0]=> NULL [1]=> NULL [2]=> NULL [3]=> NULL [4]=> NULL [5]=> NULL [6]=> NULL [7]=> NULL [8]=> NULL [9]=> NULL [10]=> NULL [11]=> NULL [12]=> NULL [13]=> NULL [14]=> NULL [15]=> NULL [16]=> NULL }
但是,当我在MySQL命令行中运行相同的查询时,我得到的实际结果是相同数量的键,但是值在那里。
这是我的
composer.json
require部分的非默认部分: "components/jquery": "~1.11,<2.0",
"twbs/bootstrap": "3.3.*",
"braincrafted/bootstrap-bundle": "~2.1",
"knplabs/knp-menu": "~1.1",
"knplabs/knp-menu-bundle": "~1.1",
"knplabs/knp-paginator-bundle": "dev-master",
"symfony/icu": "1.1.*",
"mnot/hinclude": "dev-master",
"rhumsaa/array_column": "~1.1",
"webfactory/exceptions-bundle": "@stable",
"friendsofsymfony/jsrouting-bundle": "~1.5",
"hearsay/require-js-bundle": "~1.0",
"browserstate/history.js": "dev-master"
请密切注意所有版本调整,因为我确实对此感到困惑。但是,我不知道教义在哪一点上走出了深渊。
编辑:根据最新评论和now seeing this,这是怎么回事?实际上this URL更合适,因为我没有使用
doctrine/dbal
,而是使用了doctrine/orm
。 最佳答案
此问题是由doctrine/orm
从2.4.x更新到2.5版引起的。有很多BC breaks。
将doctrine/orm
降级为https://packagist.org/packages/doctrine/orm#v2.4.7,问题将消失。知道这是您的问题之后,您需要重写查询以满足所有新要求。我确实也在那里看到有关MariaDB问题的注释。
实际上,由于我本人还没有完全解决这个问题,因此与重新生成实体一样容易。当我这样做时,我总是很犹豫。