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 = ; $i < ; $i++) {
$product = new Product();
$product->setName('product '.$i);
$product->setPrice(mt_rand(, ));
$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方法差不多,都是对对象进行托管,之后更新入数据库当中,
DcotrineFixtureBundle学习的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
随机推荐
- (转)史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!
背景:因为自己的简历写了dubbo,面试时候经常被问到.实际自己对dubbo的认识只停留在使用阶段,所以有必要好好补充下基础的理论知识. https://zhuanlan.zhihu.com/p/45 ...
- 启动多个logstash脚本
一台服务器上启动多个logstash脚本 # more logstash_click #!/bin/sh # Init script for logstash # Maintained by Elas ...
- 分布式监控系统开发【day37】:服务端生成配置数据(四)
一.目录结构 二.引子与代码 1.客户端获取服务列表接口 1.解决了什么问题 客户端要给我获取服务列表的的时候,他肯定要告诉他是谁?他怎么告诉我,客户端必须有一个id号 Saltsack你装一个客户端 ...
- MongoDB3.6 一键化自动部署方案
1.系统基础配置 下面的命令默认都使用root用户进行操作,操作系统为Centos7,mongodb3.6.x以上版本 1.1 修改系统配置文件/etc/security/limits.conf和/e ...
- sql注入学习 sqlliab教程 lesson1 (sqlliab搭建教程)
靶场搭建 小白建议直接用集成环境.推荐laragon (由于这套靶场较早,需要使用php7.0以下环境,安装完php laragon需要在安装php低版本,默认laragon只集成了一个7.0的php ...
- 第29月第2天 charles
1. https://www.jianshu.com/p/55a8c84e0f24
- 【vue】路由配置
一般组件我们会有全屏组件,或是在页面的某个部分显示组件,所以路由的第一层一般是全屏显示的,而在/目录下的组件为页面的某个部分显示的,通常需求是这样的,登录是全屏显示的,而普通页面是在页面的某个部分进行 ...
- Centos 05 系统目录讲解
本节内容 1.linux目录结构 2.主目录功能简介 3.重要子目录 linux目录结构 在linux里面,逻辑上所有目录只有一个顶点,根是所有目录的起点. 根下面是类似一个倒挂的树一样的层次结构 可 ...
- 设计模式一: 单例模式(Singleton)
简介 单例模式是属于创建型模式的一种(另外两种分别是结构型模式,行为型模式).是设计模式中最为简单的一种. 英文单词Singleton的数学含义是"有且仅有一个元素的集合". 从实 ...
- laravel5.4 打印输出 sql 语句
直接打印 sql 语句 DB::connection('test_link')->enableQueryLog(); //执行代码 $log = DB::connection('test_lin ...