本文实例讲述了Symfony2实现在doctrine中内置数据的方法。分享给大家供大家参考,具体如下:
我们在使用symfony的时候,有时需要在数据库中内置一些数据,那么我们如何在doctrine中设置呢?
所幸,symfony已经为我们封装好了。这里,我们需要用到DoctrineFixturesBundle。
第一步,在composer.json中引入所需的DoctrineFixturesBundle:
{ "require": { "doctrine/doctrine-fixtures-bundle": "2.2.*" }}
第二步,执行composer:
composer update doctrine/doctrine-fixtures-bundle
第三步,在内核(app/AppKernel.php)中注册此bundle:
// ...public function registerBundles(){ $bundles = array( // ... new Doctrine/Bundle/FixturesBundle/DoctrineFixturesBundle(), // ... ); // ...}
第四步,在需要内置数据的bundle下创建一个PHP类文件,如src/Acme/HelloBundle/DataFixtures/ORM/LoadUserData.php,其代码如下:
// src/Acme/HelloBundle/DataFixtures/ORM/LoadUserData.phpnamespace Acme/HelloBundle/DataFixtures/ORM;use Doctrine/Common/DataFixtures/FixtureInterface;use Doctrine/Common/Persistence/ObjectManager;use Acme/HelloBundle/Entity/User;class LoadUserData implements FixtureInterface{ /** * {@inheritDoc} */ public function load(ObjectManager $manager) { $userAdmin = new User(); $userAdmin->setUsername('admin'); $userAdmin->setPassword('test'); $manager->persist($userAdmin); $manager->flush(); }}
第五步,通过console执行内置数据命令:
php app/console doctrine:fixtures:load #为防止数据库中原先的值被清除,可使用 --append 参数
此命令有以下三个参数: