Doctirne---查询更新等操作

使用Doctrine进行mysql更删改查操作,事务处理,生命周期的管理

1.先记录最简单的插入操作

$em = $this->getDoctrine()->getManager();  //用doctrine进行管理

$book = new Book();
$book->setName();  //生成book对象并进行初始化

$em->persist($book);   //交给doctrine管理,生成sql语句
$em->flush();  //执行sql语句,刷新数据库

 

2.查找操作,

一般查询需要使用repository,所以先提前写好获取repository的方法

//获取userRepository
    /**
     * @return \Scourgen\WebBundle\Entity\UserRepository
     */
   protected function getUserRepository(){
       return $this->getDoctrine()->getManager()->getRepository('ScourgenWebBundle:User');
   }

   //获取book的
    /**
     * @return \Scourgen\WebBundle\Entity\BookRepository
    */
    protected function getBookRepository(){
        return $this->getDoctrine()->getManager()->getRepository('ScourgenWebBundle:Book');
    }

 

接下来演示几个基本的查询操作

//有三种方法,findAll,findOneBy,findBy进行查询

//findBy 根据传入条件进行查询,返回一个数据集,可以使用foreach进行遍历
//这里看一下findBy的原型声明
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null);
//可以看出第一个参数是字段,第二个是按照某个字段进行排序,$limit限制返回数据条数,$offset不清楚暂时
//按照标题字段进行查询并按照price降序排序
/** @var $book \Scourgen\WebBundle\Entity\Book*/       使用annoation表明$book是一个Book对象
$books = $this->getBookRepository()->finBy(array('title'=>'书本'),array('price'=>'DESC'));

foreach($books as $book){
  echo "相应的数据操作";
}

 

//findOneBy 

//先看一下fingOneBy函数原型,参数都类似,由于是查找一个,所以就没有offset和limit参数,只需要注意返回的只是一个对象,
public function findOneBy(array $criteria, array $orderBy = null);

 

//findAll()  这个简单,查找所有数据,一般不会用到

//这里暂时只学习这几个简单的,之后再进行补充

//还有的时候需要使用原生sql语句进行查询,具体流程如下

$sql = "select book.title from book where book.id =1 or book.id=2;";生成sql语句
$this->get("database_connection")->fetchAll($sql);   //使用fetchAll方法进行查询,返回数据集,但是需要注意,这样返回的数据不是我们所定义的Book对象,而是原生的mysql对象

//删除操作更简单

先查找需要删除的数据,之后使用persist()交给doctrine进行托管,最后用$em->remove(); 方法从数据库当中删除数据

 

//这里说明以下doctrine的事务处理,

$em = $this->getDoctrine()->getManager();
$em->getConnection()->beginTransaction(); //开启事务
try{
      //do something
     $em->getConnection()->commit();  //提交事务
}catch(Exception $e){
     $em->getConnection()->rollback();  //如果产生异常就返回
}

 

 

一般有一些更新操作我们会经常执行,比如创建时间,更新时间字段的记录,这里我们可以使用ORM\PrePersist和ORM\PreUpdate实现

前者是创建新的对象刷新数据库之前进行操作,而后者是在更新某个对象之前进行操作,比如我们可以在创建对象之后,更新数据之前,
对创建书写函数进行设置,又比如我们在更新操作执行之前,对更新时间书写函数进行自动设置,下面是例子

/**
     * 在创建之前先进行的操作,记录时间
     * @ORM\PrePersist()
     */
    public function PrePersist(){
        if($this->getCreateTime() == null) {   //第一次创建则更新
            $this->setCreateTime(new \Datetime('now'));
        }
        $this->setUpdateTime(new \Datetime('now'));   //记录更新时间
    }
    /**
     * 在更新之前进行的操作,更新时间
     * 如果有很多表都有这个操作,可以创建一个基类,有这些方法,继承即可
     * @ORM\PreUpdate()
     */
    public function PreUpdate(){
        $this->setUpdateTime(new \DateTime('now'));
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值