10.Doctrine2 (2)
来源:互联网 发布:淘宝如何清空收藏夹 编辑:程序博客网 时间:2024/06/03 18:47
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
0 0
- 10.Doctrine2 (2)
- 9. Doctrine2
- doctrine2简要教程
- 11.Doctrine2 (3)
- doctrine2使用composer下载代码
- 2-10. 海盗分赃
- 10.Struts 2 Actions Example
- 10.vc调试入门2
- 2-10. 海盗分赃【PAT记录】
- 10. 泛型 Part 2 --- 学习笔记
- 2-10. 海盗分赃(25)
- 2-10. 海盗分赃(25)
- [翻译]Drools6.2帮助文档-10. CDI
- 10. Browser 对象 - Location 对象(2)
- 10.shell编程(10) --- 函数(2)
- 10. Hibernate_详解 Hibernate 映射文件(2)
- 10.iterm 2 install rz , sz
- 10.NoSQL数据库第2部分
- 常用的项目管理工具JIRA | ...
- Leetcode 341. Flatten Nested List Iterator
- Python.微信
- C++创建文件夹
- 关于Windows用Task Scheduling执行C++ exe文件
- 10.Doctrine2 (2)
- Leetcode 215. Kth Largest Element in an Array
- [LeetCode]100. Same Tree
- spring aop(面向切面) 详解
- vec
- HashCode 和 Equals 的使用 - 使用自定义对象作为HashMap的Key例子
- 项目管理之甘特图
- 這是我的java程序之路的開始
- poj 2356 poj3370