发新话题
打印

ThinkPHP夜话之6:ORM操作

ThinkPHP夜话之6:ORM操作

第6话:ORM操作
  • 推荐指数:5
  • 难度系数:3
  • 实用指数:5


对象关系的映射模式似乎是每个框架都非常关注的东西,因为这个层次的操作决定了用户使用的难易程度。当然,也存在一些思想观念的转换。所以,对面向过程的开发习惯的人,刚开始会觉得很不适应。虽然,我们也觉得之前的模式有时候挺麻烦。在开发ThinkPHP之初,我就分析过很多的面向对象的操作方式,思考如果才能体现一种方便而有效的数据存取。

因为ThinkPHP的ORM操作基于数据库抽象层之上,所以并不需要考虑数据库本身的差异问题。这个留给数据库的接口来解决。并且借助于Dao模式来完成常用的操作。
ThinkPHP的存取操作并不复杂,而且也是容易理解的,下面举几个例子。
  • // 创建User数据访问对象
  • $dao = D("User");
  • // 获取id为5的一个用户数据
  • $user = $dao->getById(5);
  • // 修改用户的名称
  • $user->name = '流年';
  • // 把修改的结果再保存到数据库
  • $dao->save($user);


ORM的好处很明显,我们不需要关心如何连接数据库,如何写SQL语句,以及如何对返回的结果进行分析获取。
再来看一个例子:
  • // 创建书籍数据访问对象
  • $dao = D("Books");
  • // 取出所有type为2的书籍
  • $books = $dao->findAll("type=2");
  • // 统计书库里面type为3的书籍数目
  • $count = $dao->getCount('type=3');
  • // 取出第一本书籍
  • $book1 = $dao->getFirst();
  • // 取出第三本书籍
  • $book3 = $dao->getN(3);
  • // 删除id为7的书籍
  • $dao->deleteById(7);
  • // 增加一本newBook
  • $dao->add($newBook);



可以看出ThinkPHP除了封装了CURD的实现外还提供了更多的功能。其实,ORM还包括关联操作的范畴,这块另外有时间在讨论了。

TOP

发新话题