Php Doctrine ORM架构工具:更新错误:对布尔值调用成员函数add()

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.

尝试通过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. {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