10.Doctrine2 (2)
1.插入数据
$user = new User();$user->setAge(19);$user->setEmail('hello@qq.com');$user->setPassword('aaaaaa');$em = $this->getDoctrine()->getEntityManager();$em->persist($user); //把 $user 交给 DoctrineManager管理$em->flush();
2.取出数据
$em = $this->getDoctrine()->getManager();//从数据库取出 id=1 的用户,因为与 profile 为1:1,所以会 left join profile$user = $em->getRepository('WwwWebBundle:User')->findOneBy(array('id'=>1));$book1 = new Book();$book1->setTitle("book1");$book1->setPrice(10);$book1->addUser($user);$book2 = new Book();$book2->setTitle("book2");$book2->setPrice(20);$book2->addUser($user);$em->persist($book1);$em->persist($book2);$em->flush();
有个坑:
$em = $this->getDoctrine()->getManager();//从数据库取出 id=1 的用户,因为与 profile 为1:1,所以会 left join profile/*** @var $user \Www\WebBundle\Entity\User;*/$user = $em->getRepository('WwwWebBundle:User')->findOneBy(array('id'=>1));/*** @var $user \Www\WebBundle\Entity\Book;*/foreach ($user->getBooks() as $book) {echo $book->getTitle();}
3.更新数据
$em = $this->getDoctrine()->getManager();//从数据库取出 id=1 的用户,因为与 profile 为1:1,所以会 left join profile/*** @var $user \Www\WebBundle\Entity\User;*/$user = $em->getRepository('WwwWebBundle:User')->findOneBy(array('id'=>1));$user->setAge(100);$em->persist($user);$em->flush();
4.删除数据
$em = $this->getDoctrine()->getManager();//从数据库取出 id=1 的用户,因为与 profile 为1:1,所以会 left join profile/*** @var $user \Www\WebBundle\Entity\User;*/$user = $em->getRepository('WwwWebBundle:User')->findOneBy(array('id'=>1));$em->remove($user);$em->flush();
5.ParamConverter的使用:
/*** @Route("/book/show/{id}")* @ParamConverter("book",class="WwwWebBundle:Book")*/public function showBookAction(Book $book){echo new Response($book->getTitle());}
5. 使用 Repository 的 find 方法
$em = $this->getDoctrine()->getManager();/*** @var $user \Www\WebBundle\Entity\Book;*///$book = $em->getRepository('WwwWebBundle:Book')->findByTitle($book = $em->getRepository('WwwWebBundle:Book')->findBy(array('title'=>'book1'),array('price'=>'DESC'));
6. Repository 里定义方法
复杂的逻辑放这里,然后在其他地方调用
7. 使用 Doctrine 的生命周期管理功能
$em = $this->getDoctrine()->getManager();/*** @var $user \Www\WebBundle\Entity\Book;*/$book3 = new Book();$book3->setTitle('book3')->setPrice(333);$em->persist($book3);$em->flush();$book2 = $em->getRepository('WwwWebBundle:Book')->findOneBy(array('id'=>2));$book2->setPrice(222);$em->persist($book2);$em->flush();//数据库会自动更新 createAt 和 updateAt
lifecycle event
10.Doctrine2 (2)相关推荐
- H3CNE最新版官网考试模拟题库
以下工作于OSI 参考模型数据链路层的设备是__A____.(选择一项或多项) A. 广域网交换机 B. 路由器 C. 中继器 D. 集线器 A 数据链路层传输的是帧,交换机是基于帧转发的:B 路由器 ...
- lisp协议instand_分享|Linux 上 10 个最好的 Markdown 编辑器
在这篇文章中,我们会点评一些可以在 Linux 上安装使用的最好的 Markdown 编辑器. 你可以在 Linux 平台上找到非常多的 的 Markdown 编辑器,但是在这里我们将尽可能地为您推荐 ...
- 10任务栏全屏时老是弹出_Deepin 15.10 发布,深度操作系统
深度操作系统是一个致力于为全球用户提供美观易用.安全可靠的Linux发行版. 深度操作系统基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本.台式机和一体机.深度操作系统( ...
- Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)
1. 命令行参数 向 shell 脚本传递数据的最基本方法是使用命令行参数.命令行参数允许在运行脚本时向命令行添加数据. $ ./addem 10 30 本例向脚本 addem 传递了两个命令行参数( ...
- Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建
Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建 一.Anaconda 创建 python3.7环境 1.进入 C:\Users\用户名 目录下,找到 ...
- debian 10 静态ip配置
查看网卡 ip addr 修改配置 vim /etc/network/interfaces 模板 auto ${网卡名} iface ${网卡名} inet ${static} address ${I ...
- 解决 win10 pycurl安装出错 Command python setup.py egg_info failed with error code 10 编译安装包 安装万金油...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yexiaohhjk/article/d ...
- 英特尔Intel® Arria® 10 FPGA加速器设计
英特尔Intel® Arria® 10 FPGA加速器设计 Introducing the Intel® Vision Accelerator Design with Intel® Arria® 10 ...
- 保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事
保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事 10 things to consider when securing an embedded 802.11 Wi-Fi device 随着 ...
- 交换机应用寻找10个完美的因素
交换机应用寻找10个完美的因素 10 factors for finding the perfect switch for your application 选择开关的过程并不总是值得注意的.考虑到大 ...
最新文章
- centos架设lamp环境 php+mysql+httpd+vsftp
- LinkedIn工程经理眼中的数据世界格局
- java如何创建一个两个数的队列_java线程池 如何构建一个线程立即到拉到MAX数量跑业务,线程到MAX了,额外的队列可以存储任务的线程池...
- leader选举的源码分析-QuorumPeer.start
- [css]你有使用过preload、preconnect、prefetch这些属性吗?说说它们都有什么作用?
- MySQL与MongoDB的区别
- static_cast、dynamic_cast、reinterpret_cast、和const_cast
- Educoder 机器学习之随机森林算法 第3关:手写数字识别
- Unity配置JAVA环境变量
- Calling LoadLibraryEx on ISAPI filter failed
- Windows服务器安全策略配置——简单实用
- Tiny6410 的NandFlash(K9GAG08U0E)
- 学到了林海峰,武沛齐讲的Day17-5 内置函数
- 百度下拉框|百度下拉联想词|百度搜索框优化|百度下拉
- swper_swiper
- 京东自营客服初级考试
- sap 流程图 退货销售订单_销售订单_退货型
- 小白如何自学编程? 看完这篇这些雷和坑千万不要踩!
- Mac升级自带PHP版本(非Homebrew方式)
- odoo开发:关于打印repair模块PDF报表,默认纸张头部有一大块空白无法修改的问题解决方案