根据官方文档对Fixture进行学习

首先使用

composer require --dev doctrine/doctrine-fixtures-bundle

来导入扩展

之后注意,如果symfony版本不是3以下的,需要添加数组元素到AppKernel当中,即下列语句,注意添加到in_array对应的那块

 $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();

FixtureBundle本质上可以看作一个php类,创建一个Fixture类,用它来,使用

Doctrine\Common\Persistence\ObjectManage 的ObjectManage类来托管(persist)需要加入的对象实体,对对象实体进行初始化,之后使用  flush方法来更新入数据库当中
namespace App\DataFixtures;use App\Entity\Product;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;class AppFixtures extends Fixture
{public function load(ObjectManager $manager){// create 20 products! Bam!for ($i = 0; $i < 20; $i++) {$product = new Product();$product->setName('product '.$i);$product->setPrice(mt_rand(10, 100));$manager->persist($product);}$manager->flush();}
}

之后命令行执行
php bin/console doctrine:fixtures:load

将数据更新入数据库当中

除此之外,如果你想讲services和Fixture相结合的话,你的Fixture就可以当做是一个Services进行使用,可以注入任何东西,实例,这里的就是说可以在Fixture当中添加构造函数,变量等,注意这里的encoder->encodePassword方法可以对密码进行加密,具体实现不说了,
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;// ...
private $encoder;public function __construct(UserPasswordEncoderInterface $encoder)
{$this->encoder = $encoder;
}// ...
public function load(ObjectManager $manager)
{$user = new User();$user->setUsername('admin');$password = $this->encoder->encodePassword($user, 'pass_1234');$user->setPassword($password);$manager->persist($user);$manager->flush();
}

同时可以在一个Fixture当中调用另一个Fixture,一个Fixture当中使用
this->addReference(self::ADMIN_USER_REFERENCE, $userAdmin);

将$userAdmin变量交给addReference,之后在另一个Fixture当中,使用getReference方法来获得$userAdmin变量,参数为,类名:add时候的别名
$userGroup->addUser($this->getReference(UserFixtures::ADMIN_USER_REFERENCE));

具体实例如下
// src/DataFixtures/UserFixtures.php
// ...
class UserFixtures extends Fixture
{public const ADMIN_USER_REFERENCE = 'admin-user';public function load(ObjectManager $manager){$userAdmin = new User('admin', 'pass_1234');$manager->persist($userAdmin);$manager->flush();// other fixtures can get this object using the UserFixtures::ADMIN_USER_REFERENCE constant$this->addReference(self::ADMIN_USER_REFERENCE, $userAdmin);}
}// src/DataFixtures/GroupFixtures.php
// ...
class GroupFixtures extends Fixture
{public function load(ObjectManager $manager){$userGroup = new Group('administrators');// this reference returns the User object created in UserFixtures$userGroup->addUser($this->getReference(UserFixtures::ADMIN_USER_REFERENCE));$manager->persist($userGroup);$manager->flush();}
}

个人感觉这个东西和doctrine的getManager方法差不多,都是对对象进行托管,之后更新入数据库当中,

转载于:https://www.cnblogs.com/eenio/p/10538694.html

DcotrineFixtureBundle学习相关推荐

  1. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】

    类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...

  2. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  3. FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器

    文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...

  4. FastAI 课程学习笔记 lesson 1:宠物图片分类

    文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...

  5. 深度学习学习指南-工具篇

    colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...

  6. Redis学习之路(一)--下载安装redis

    redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...

  7. python内置库之学习configparser库(一)

    python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...

  8. 前端Vue学习之路(二)-Vue-router路由

    Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...

  9. 前端Vue学习之路(一)-初识Vue

    Vue学习之路 (一) 1.引言 2.更换npm国内镜像源 3.用npm下载Vue 4.Vue全家桶 5.使用命令创建项目 5.推荐插件 6.推荐网站 7.学习扩展 1.引言 先安装node.js环境 ...

  10. 如何学习数据挖掘和数据科学的7个步骤

    前言 概括 1 学习语言 2 工具:数据挖掘,数据科学和可视化软件 3 教科书 4 教育:网络研讨会,课程,证书和学位 5 数据 6 比赛 7 互动:会议,团体和社交网络 more 前言 最近一直一再 ...

最新文章

  1. php sql语句去掉重复,sql 去除重复记录的语句
  2. 区域填充与击中击不中变换
  3. js中正则表达式验证_JS正则表达式的验证
  4. c语言是字符串123变112233,Objective C学习第四节:OC里面的字符串和数值
  5. python3.6.5安装教程-Centos7安装python3.6.5
  6. 腾讯云数据库闪耀曼哈顿,CynosDB回馈开源社区
  7. pgAdminIII使用图解
  8. 每日算法系列【LeetCode 233】数字 1 的个数
  9. python生成linux执行文件_比较Python中两个PyInstaller生成的Linux可执行文件
  10. manacher最长回文序列c++
  11. python三菱modbus解密_Modbus PLC攻击分析:Python和Mbtget读写PLC
  12. 移远4G模组EC600N进行TCP/IP连接和服务器测试
  13. 一款功能强大、高颜值、官方出品的Redis可视化工具
  14. 未能从dhcp服务器获得ip地址,当出现无法从DHCP服务器中获得地址的常见处理步骤...
  15. 运放技术——谐波失真THD
  16. 关于开发人员学习的网站【收藏】
  17. 【软件工程实践】Hive研究-Blog7
  18. Dell 灵越7559笔记本电脑加M.2固态硬盘
  19. Cuckoo Filter(布谷过滤器)
  20. 加密解密工具 之 波利比奥斯方阵密码

热门文章

  1. java数组写入excel_java - 如何使用Java将数组数据写入Excel - 堆栈内存溢出
  2. 十七、String类型常用方法(二)
  3. Ubuntu16.x服务器 安装 Java,Elasticsearch5.4.X,中文分词,同义词,Logstash5.4.X 日志搜集
  4. Filebeat 日志收集器 logstash-forwarder 的替代品
  5. WebCollector 简介与 快速入门
  6. java 区间api_Java 常用API(一)
  7. Redis主从配置,哨兵,集群的设计原理
  8. Chrome 开发者工具(DevTools)中所有快捷方式列表
  9. thinkphp3.2.3入口文件详解
  10. 互联网对实体经济的三轮冲击