Php Doctrine ORM架构工具:更新错误:对布尔值调用成员函数add()
尝试通过CLI更新数据库时遇到此错误:Php Doctrine ORM架构工具:更新错误:对布尔值调用成员函数add(),php,doctrine,Php,Doctrine,尝试通过CLI更新数据库时遇到此错误: > vendor\bin\doctrine orm:schema-tool:update --force --dump-sql Error: Call to a member function add() on boolean in C:\inetpub\wwwroot\jobrouter\_projects\event-app\bootstrap.php on line 10 Call Stack: 0.0013 352656 1.
> vendor\bin\doctrine orm:schema-tool:update --force --dump-sql
Error: Call to a member function add() on boolean in C:\inetpub\wwwroot\jobrouter\_projects\event-app\bootstrap.php on line 10
Call Stack:
0.0013 352656 1. {main}() C:\...\vendor\doctrine\orm\bin\doctrine:0
0.0028 353432 2. include('C:\...\vendor\doctrine\orm\bin\doctrine.php') C:\...\vendor\doctrine\orm\bin\doctrine:4
0.0078 362368 3. require('C:\...\cli-config.php') C:\...\vendor\doctrine\orm\bin\doctrine.php:48
0.0082 362752 4. require_once('C:\...\bootstrap.php') C:\...\cli-config.php:3
这是我的bootstrap.php:
<?php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
$autoloader = require_once __DIR__."/vendor/autoload.php";
$autoloader->add('', __DIR__."/src/library/");
// Create a simple "default" Doctrine ORM configuration for Annotations
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"),
$isDevMode, null, null, false);
// database configuration parameters
$conn = array(
'driver' => 'pdo_mysql',
'user' => '...',
'password' => '...',
'host' => '...',
'dbname' => '...',
'charset' => 'utf8',
);
// obtaining the entity manager
$entityManager = EntityManager::create($conn, $config);
我在浏览器中使用该应用程序没有问题,自动加载可以正常工作。我只是在尝试使用Doctrine CLI时才遇到这个错误,我不明白当$autoloader
应该总是返回一个对象时,它怎么可能是布尔值
有人遇到过类似的错误吗?您是如何修复的
编辑:我刚刚通过调试器运行了我的应用程序,
require\u once\uu DIR\uuu.“/vendor/autoload.php”
为$autoloader
返回正确的对象,而不是bool。我在这里完全迷路了。因为您已经配置了PSR-0自动加载
{
"autoload": {
"psr-0": {
"": "library/src/"
}
}
}
没有必要这样做
$autoloader = require_once __DIR__ . '/vendor/autoload.php';
$autoloader->add(
'',
__DIR__ . '/src/library/'
);
调整boostrap.php
仅需要自动加载器:
require_once __DIR__ . '/vendor/autoload.php';
然后确保vendor/autoload.php
存在,最好通过运行
$ composer install
或
在项目的根目录中。因为您已经配置了PSR-0自动加载
{
"autoload": {
"psr-0": {
"": "library/src/"
}
}
}
没有必要这样做
$autoloader = require_once __DIR__ . '/vendor/autoload.php';
$autoloader->add(
'',
__DIR__ . '/src/library/'
);
调整boostrap.php
仅需要自动加载器:
require_once __DIR__ . '/vendor/autoload.php';
然后确保vendor/autoload.php
存在,最好通过运行
$ composer install
或
在项目的根目录中。如何共享
bootstrap.php
,这样我们可以做的不仅仅是猜测?@localheinz其中的一部分已经在我的帖子中,但我已经编辑并将完整的bootstrap.php
放在其中。你也可以共享你的composer.json
?@localheinz Done。还添加了一个附加编辑。我现在甚至比以前更困惑了。共享bootstrap.php
怎么样,这样我们就可以做更多的事情了?localheinz部分内容已经在我的帖子中了,但我已经编辑并将完整的bootstrap.php
放在里面了。你也可以共享你的composer.json
?@localheinz Done。还添加了一个附加编辑。我现在比以前更困惑了。不幸的是,这并没有解决我的问题,我一直在不断地得到越来越多(不同的)错误,看起来我不知怎么搞砸了我的ORM。我最终手动更新了数据库。无论如何,非常感谢你的帮助,至少我的自动加载器现在更优雅了:幸好这并没有解决我的问题,我一直在不断地得到越来越多(不同的)错误,看起来我的ORM不知怎么搞砸了。我最终手动更新了数据库。无论如何,非常感谢你的帮助,至少我的自动加载器现在更优雅了:D