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
原创粉丝点击