Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Doctrine orm 如何将silex与orm EntityManager一起使用?_Doctrine Orm_Entitymanager_Silex - Fatal编程技术网

Doctrine orm 如何将silex与orm EntityManager一起使用?

Doctrine orm 如何将silex与orm EntityManager一起使用?,doctrine-orm,entitymanager,silex,Doctrine Orm,Entitymanager,Silex,我是Silex框架的新手。我想使用doctrine实体管理器进行简单的SQL DB连接。请给出一些简单的例子 提前感谢, SK对于Silex,没有官方的ORM服务提供商,只有DBAL,但有几种您可以尝试。 我开始使用在github中启动次数最多且看起来不错的软件。下面是以下所有设置的一个示例。还有一篇文章解释了这种设置。或者,如果您只是想要现在就可以使用的东西,请尝试: 否则,下面将尝试解释一种设置和“将silex与orm EntityManager一起使用”的方法: 安装 将此行添加到comp

我是Silex框架的新手。我想使用doctrine实体管理器进行简单的SQL DB连接。请给出一些简单的例子

提前感谢,

SK

对于Silex,没有官方的ORM服务提供商,只有DBAL,但有几种您可以尝试。
我开始使用在github中启动次数最多且看起来不错的软件。

下面是以下所有设置的一个示例。还有一篇文章解释了这种设置。或者,如果您只是想要现在就可以使用的东西,请尝试:

否则,下面将尝试解释一种设置和“将silex与orm EntityManager一起使用”的方法:

安装 将此行添加到composer.json中:

"dflydev/doctrine-orm-service-provider": "1.0.6"
从命令行运行:

~$ composer update dflydev/doctrine-orm-service-provider
登记 注册服务提供商:

$app->register(new Silex\Provider\DoctrineServiceProvider());
$app->register(new Dflydev\Silex\Provider\DoctrineOrm\DoctrineOrmServiceProvider());
配置 配置数据库和实体映射您的路径可能不同。有关更好更详细的解释,请参见:

您可能需要设置
cli config.php
,有关更多信息,请阅读:

通过上述设置,您还应该能够从控制器方法使用
$app['orm.em']

$app->match('/form', function (Request $request) use ($app) {

    $em = $app['orm.em'];

    $entity = new \My\Namespace\To\Entity\Form();

    $form = $app['form.factory']->create(new \My\Namespace\To\Form\FormType(), $entity);

    $form->handleRequest($request);

    if ($form->isValid()) {
        $em->persist($entity);
        $em->flush();
    }

    return new Response($app['twig']->render('form.html.twig', array(
        'form' => $form->createView(),
    )));

})->bind('form');

cli-config.php是个棘手的部分,您的答案帮助很大,谢谢。请注意
$config->newDefaultAnnotationDriver($newDefaultAnnotationDrivers)还接受第二个布尔参数(使用简单注释?)。这可能会导致
无法处理Metada类。
令人头痛。“dflydev/orm服务提供商”:“^2.0”-我的工作版本。
<?php
    // http://docs.doctrine-project.org/en/latest/reference/configuration.html
    require __DIR__.'/vendor/autoload.php';
    require __DIR__.'/path/to/app/config.php';
    $newDefaultAnnotationDrivers = array(
        __DIR__."/src/MyNamespace",
    );
    $config = new \Doctrine\ORM\Configuration();
    $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ApcCache);
    $driverImpl = $config->newDefaultAnnotationDriver($newDefaultAnnotationDrivers);
    $config->setMetadataDriverImpl($driverImpl);
    $config->setProxyDir($app['orm.proxies_dir']);
    $config->setProxyNamespace('Proxies');
    $em = \Doctrine\ORM\EntityManager::create($app['db.options'], $config);
    $helpers = new Symfony\Component\Console\Helper\HelperSet(array(
        'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()),
        'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em),
    ));
~$ php vendor/bin/doctrine orm:schema-tool:update --dump-sql
$app->match('/form', function (Request $request) use ($app) {

    $em = $app['orm.em'];

    $entity = new \My\Namespace\To\Entity\Form();

    $form = $app['form.factory']->create(new \My\Namespace\To\Form\FormType(), $entity);

    $form->handleRequest($request);

    if ($form->isValid()) {
        $em->persist($entity);
        $em->flush();
    }

    return new Response($app['twig']->render('form.html.twig', array(
        'form' => $form->createView(),
    )));

})->bind('form');