当前位置:首页 > CMS教程 > 其它CMS > 列表

Symfony2实现在doctrine中内置数据的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-09 11:12:40 浏览: 评论:0 

这篇文章主要介绍了Symfony2实现在doctrine中内置数据的方法,结合实例形式分析了在doctrine中内置数据的具体步骤与相关技巧,需要的朋友可以参考下。

本文实例讲述了Symfony2实现在doctrine中内置数据的方法,分享给大家供大家参考,具体如下:

我们在使用symfony的时候,有时需要在数据库中内置一些数据,那么我们如何在doctrine中设置呢?

所幸,symfony已经为我们封装好了,这里,我们需要用到DoctrineFixturesBundle。

第一步,在composer.json中引入所需的DoctrineFixturesBundle:

  1.   "require": { 
  2.     "doctrine/doctrine-fixtures-bundle""2.2.*" 
  3.   } 

第二步,执行composer:

composer update doctrine/doctrine-fixtures-bundle

第三步,在内核(app/AppKernel.php)中注册此bundle:

  1. // ... 
  2. public function registerBundles() 
  3.   $bundles = array
  4.     // ... 
  5.     new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(), 
  6.     // ... 
  7.   ); 
  8.   // ... 

第四步,在需要内置数据的bundle下创建一个PHP类文件,如src/Acme/HelloBundle/DataFixtures/ORM/LoadUserData.php,其代码如下:

  1. // src/Acme/HelloBundle/DataFixtures/ORM/LoadUserData.php 
  2. namespace Acme\HelloBundle\DataFixtures\ORM; 
  3. use Doctrine\Common\DataFixtures\FixtureInterface; 
  4. use Doctrine\Common\Persistence\ObjectManager; 
  5. use Acme\HelloBundle\Entity\User; 
  6. class LoadUserData implements FixtureInterface 
  7.   /** 
  8.    * {@inheritDoc} 
  9.    */ 
  10.   public function load(ObjectManager $manager
  11.   { 
  12.     $userAdmin = new User(); 
  13.     $userAdmin->setUsername('admin'); 
  14.     $userAdmin->setPassword('test'); 
  15.     $manager->persist($userAdmin); 
  16.     $manager->flush(); 
  17.   } 

第五步,通过console执行内置数据命令:

php app/console doctrine:fixtures:load #为防止数据库中原先的值被清除,可使用 --append 参数

此命令有以下三个参数:

–fixtures=/path/to/fixture – Use this option to manually specify the directory where the fixtures classes should be loaded;

–append – Use this flag to append data instead of deleting data before loading it (deleting first is the default behavior);

–em=manager_name – Manually specify the entity manager to use for loading the data.

官方文档:http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

Tags: Symfony2 doctrine

分享到: