Tôi đang cố gắng sử dụng Doctrine ORM với Silex, nhưng tôi thấy đó là một trải nghiệm hoàn toàn khó chịu do thiếu tài liệu nhất quán.
Khi tôi chạy trong bảng điều khiển nhà cung cấp/bin/học thuyết
Khi nào, tôi nhận được kết quả đầu ra sau:
Đầu ra:
Bạn đang thiếu tệp "cli-config.php" hoặc "config/cli-config.php" trong
dự án cần thiết để Doctrine Console hoạt động. Bạn có thể sử dụng.
mẫu sau đây làm mẫu:
sử dụng Doctrine\ORM\Tools\Console\ConsoleRunner;
// thay thế bằng tệp vào bootstrap dự án của riêng bạn
require_once 'bootstrap.php';
// thay thế bằng cơ chế truy xuất EntityManager trong ứng dụng của bạn
$entityManager = GetEntityManager();
return ConsoleRunner::createHelperSet($entityManager);
Đây là tệp Composer.json của tôi:
{
"yêu cầu": {
"silex/silex": "2.0.*@dev",
"symfony/yaml": "2.6.7",
"học thuyết/dbal": "~2.2",
"dflydev/doctrine-orm-service-provider": "2.0.*@dev",
"khepin/yaml-fixtures-bundle": "~0.8.1"
},
"cấu hình": {
"bin-dir": "bin"
}
}
Đây là mã php để đăng ký dịch vụ Doctrine, v.v.
sử dụng Doctrine\Common\Cache\ApcCache;
sử dụng Doctrine\Common\Cache\ArrayCache;
sử dụng Silex\Provider\DoctrineServiceProvider;
sử dụng Dflydev\Provider\DoctrineOrm\DoctrineOrmServiceProvider;
$app->register(new DoctrineServiceProvider(), array(
'db.options' => mảng(// http://silex.sensiolabs.org/doc/providers/doctrine.html
'trình điều khiển' => 'pdo_mysql',
'dbname' => 'foobar',
'host' => 'localhost',
'người dùng' => 'gốc',
'mật khẩu' => 'gốc',
'bộ ký tự' => 'utf8'
)
));
$app->register(new DoctrineORMServiceProvider(),
mảng(
'db.orm.proxies_dir' => __DIR__.'/../cache/doctrine/proxy',
'db.orm.proxies_namespace' => 'DoctrineProxy',
'db.orm.cache' => !$app['debug'] &&extension_loaded('apc') ? new ApcCache() : new ArrayCache(),
'db.orm.auto_generate_proxies' => đúng,
'db.orm.entities' => mảng(mảng(
'gõ' => 'simple_yaml',
'path' => __DIR__.'/src/Resources/config/doctrine',
'không gian tên' => 'Foobar\Entity',
)),
));
Đây là tệp cấu hình của tôi (bin/cli-config.php)
// truy xuất EntityManager
sử dụng Doctrine\ORM\Tools\Setup;
sử dụng Doctrine\ORM\EntityManager;
sử dụng Doctrine\ORM\Tools\Console\ConsoleRunner;
$app = require_once __DIR__.'/../app/src/app.php';
$isDevMode = $app['debug'];
$paths = $app['db.orm.entities']['path'];
$config = Setup::createYAMLMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($app['db.options'], $config);
return ConsoleRunner::createHelperSet($entityManager);
我做错了什么?
Bạn cần phải bin/cli-config.php
移动到 config/cli-config.php
中。
Thật không may, tôi đã không tìm thấy tài liệu về nó. tôi đã mở học thuyết/dbal/bin/doctrine-dbal.php
và kiểm tra xem nó hoạt động như thế nào.
Về php - Học thuyết dòng lệnh ORM với Silex: Bạn đang thiếu tệp "cli-config.php" hoặc "config/cli-config.php" trong dự án của mình, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/30459720/
Tôi là một lập trình viên xuất sắc, rất giỏi!