Symfony2实现在doctrine中内置数据的方法
本文实例讲述了Symfony2实现在doctrine中内置数据的方法。分享给大家供大家参考,具体如下:
我们在使用symfony的时候,有时需要在数据库中内置一些数据,那么我们如何在doctrine中设置呢?
所幸,symfony已经为我们封装好了。这里,我们需要用到DoctrineFixturesBundle。
第一步,在composer.json中引入所需的DoctrineFixturesBundle:
{
"require":{
"doctrine/doctrine-fixtures-bundle":"2.2.*"
}
}
第二步,执行composer:
composerupdatedoctrine/doctrine-fixtures-bundle
第三步,在内核(app/AppKernel.php)中注册此bundle:
//...
publicfunctionregisterBundles()
{
$bundles=array(
//...
newDoctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
//...
);
//...
}
第四步,在需要内置数据的bundle下创建一个PHP类文件,如src/Acme/HelloBundle/DataFixtures/ORM/LoadUserData.php,其代码如下:
//src/Acme/HelloBundle/DataFixtures/ORM/LoadUserData.php
namespaceAcme\HelloBundle\DataFixtures\ORM;
useDoctrine\Common\DataFixtures\FixtureInterface;
useDoctrine\Common\Persistence\ObjectManager;
useAcme\HelloBundle\Entity\User;
classLoadUserDataimplementsFixtureInterface
{
/**
*{@inheritDoc}
*/
publicfunctionload(ObjectManager$manager)
{
$userAdmin=newUser();
$userAdmin->setUsername('admin');
$userAdmin->setPassword('test');
$manager->persist($userAdmin);
$manager->flush();
}
}
第五步,通过console执行内置数据命令:
phpapp/consoledoctrine:fixtures:load#为防止数据库中原先的值被清除,可使用--append参数
此命令有以下三个参数:
–fixtures=/path/to/fixture–Usethisoptiontomanuallyspecifythedirectorywherethefixturesclassesshouldbeloaded;
–append–Usethisflagtoappenddatainsteadofdeletingdatabeforeloadingit(deletingfirstisthedefaultbehavior);
–em=manager_name–Manuallyspecifytheentitymanagertouseforloadingthedata.
官方文档:http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html
本文永久地址:http://blog.it985.com/6662.html
本文出自IT985博客,转载时请注明出处及相应链接。
更多关于PHP框架相关内容感兴趣的读者可查看本站专题:《php优秀开发框架总结》,《codeigniter入门教程》,《CI(CodeIgniter)框架进阶教程》,《Yii框架入门及常用技巧总结》及《ThinkPHP入门教程》
希望本文所述对大家基于Symfony框架的PHP程序设计有所帮助。