DcotrineFixtureBundle学习
根据官方文档对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学习相关推荐
- java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】
类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...
- Java EE学习心得
–Java EE学习心得 1. 称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...
- FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器
文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...
- FastAI 课程学习笔记 lesson 1:宠物图片分类
文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...
- 深度学习学习指南-工具篇
colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...
- Redis学习之路(一)--下载安装redis
redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...
- python内置库之学习configparser库(一)
python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...
- 前端Vue学习之路(二)-Vue-router路由
Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...
- 前端Vue学习之路(一)-初识Vue
Vue学习之路 (一) 1.引言 2.更换npm国内镜像源 3.用npm下载Vue 4.Vue全家桶 5.使用命令创建项目 5.推荐插件 6.推荐网站 7.学习扩展 1.引言 先安装node.js环境 ...
- 如何学习数据挖掘和数据科学的7个步骤
前言 概括 1 学习语言 2 工具:数据挖掘,数据科学和可视化软件 3 教科书 4 教育:网络研讨会,课程,证书和学位 5 数据 6 比赛 7 互动:会议,团体和社交网络 more 前言 最近一直一再 ...
最新文章
- php sql语句去掉重复,sql 去除重复记录的语句
- 区域填充与击中击不中变换
- js中正则表达式验证_JS正则表达式的验证
- c语言是字符串123变112233,Objective C学习第四节:OC里面的字符串和数值
- python3.6.5安装教程-Centos7安装python3.6.5
- 腾讯云数据库闪耀曼哈顿,CynosDB回馈开源社区
- pgAdminIII使用图解
- 每日算法系列【LeetCode 233】数字 1 的个数
- python生成linux执行文件_比较Python中两个PyInstaller生成的Linux可执行文件
- manacher最长回文序列c++
- python三菱modbus解密_Modbus PLC攻击分析:Python和Mbtget读写PLC
- 移远4G模组EC600N进行TCP/IP连接和服务器测试
- 一款功能强大、高颜值、官方出品的Redis可视化工具
- 未能从dhcp服务器获得ip地址,当出现无法从DHCP服务器中获得地址的常见处理步骤...
- 运放技术——谐波失真THD
- 关于开发人员学习的网站【收藏】
- 【软件工程实践】Hive研究-Blog7
- Dell 灵越7559笔记本电脑加M.2固态硬盘
- Cuckoo Filter(布谷过滤器)
- 加密解密工具 之 波利比奥斯方阵密码
热门文章
- java数组写入excel_java - 如何使用Java将数组数据写入Excel - 堆栈内存溢出
- 十七、String类型常用方法(二)
- Ubuntu16.x服务器 安装 Java,Elasticsearch5.4.X,中文分词,同义词,Logstash5.4.X 日志搜集
- Filebeat 日志收集器 logstash-forwarder 的替代品
- WebCollector 简介与 快速入门
- java 区间api_Java 常用API(一)
- Redis主从配置,哨兵,集群的设计原理
- Chrome 开发者工具(DevTools)中所有快捷方式列表
- thinkphp3.2.3入口文件详解
- 互联网对实体经济的三轮冲击