
深入框架
手冊分類

- 1. 框架介紹
- 1.1 關于zentaoPHP框架
- 1.2 zentaophp框架的主要功能
- 1.3 zentaophp框架授權協議
- 2. 安裝框架
- 2.1 zentaoPHP框架系統要求
- 2.2 zentaoPHP框架安裝
- 3. 快速入門
- 3.1 简单的Hello world!
- 3.2 使用MVC实现的hello world!
- 3.3 部署框架自帶的簡單的blog示例
- 4. 框架基礎
- 4.1 zentaoPHP框架裏面的基本概念
- 4.2 zentaoPHP框架的兩種請求方式
- 4.3 如何生成鏈接
- 4.4 框架里面提供的html, js和css类
- 5. 深入框架
- 5.1 zentaoPHP目錄结构
- 5.2 zentaoPHP框架提供的DAO功能
- 5.3 zentaoPHP框架的分頁解決方案
- 5.4 zentaoPHP框架中的數據驗證機制
zentaoPHP框架提供的DAO功能 分享鏈接 /book/zentaophphelp/dao-1225.html
作者:王春生
最后编辑:石洋洋 于 2018-05-21 09:08:41
浏覽量:180070
本篇目錄
一、關于DAO的說明
zentaoPHP並沒有試著去實現ORM或者ActiveRecord這樣的概念。因爲我們相信,框架要留給開發人員足夠的自由發揮的空間,而不是所有的都要包辦。所以框架裏面提供了一個簡單方便的數據庫訪問對象類DAO。並且我們在封裝DAO的時候盡可能的兼容標准的sql寫法。
DAO类的定义在lib下面的dao.class.php中。框架在加载的时候,会自动生成$this->dao对象,可以在control, model或者view层的代码中直接使用$this->dao来执行各种方法。
二、執行方法的區別
如果是查詢類的語句,需要使用fetch系列的方法來返回數據。更新,刪除,替換這些方法可以使用exec()方法。
DAO在後執行的時候,有下面的方法:
fetch(): 获得满足条件的第一次记录,返回的是对象格式。 fetch($filed): 获得满足条件的第一个记录的字段$field对应的值。 fetchAll(): 获得满足条件的所有记录,以数组格式返回,索引为0-n fetchAll($key): 获得满足条件的所有记录,并使用字段$key作为索引值。 fetchPairs($key, $value): 返回键值对的列表。如果不指定参数,则取返回记录中的第一个字段作为key,第二个字段作为value。 fetchGroup($group, $key): 把满足条件的记录按照$group字段进行分组。比如把所有$status=active的放在一起。
三、操作符說明
爲了書寫的方便,DAO類裏面封裝了若幹操作符:
eq: equal,等于 ne: not equal,不等于 gt: great than, 大于 lt: little than, 小于 in: 介于一个列表中。 between: 在一个区间中。 notin:不在一个列表中。 like: 模糊匹配。
四、查詢語句:
普通的查詢:查詢account=wwccss的記錄。
$this->dao->select('*') ->from('user') ->where('account') ->eq('wwccss') ->fetch();再复杂一点,加入andWhere (或者orWhere)
$this->dao->select('*')->from('user') ->where('id')->gt(10) ->andWhere('age')->lt(20) ->orderBy('id desc') ->limit('1,10') ->fetchAll()
左連接查詢
$this->dao->select('t1.*, t2.*')->from('user')->alias('t1')->leftJoin('userGroup')->alias('t2')->on('t1.account = t2.account')->fetchAll();其他便利的方法:
$this->dao->findByAccount($account)->from('user')->fetch(); // 魔术方法,按照account进行查询。 $this->dao->select('*')->from('user')->fetchAll('account'); // 返回的结果中,以account为key。 $this->dao->select('account, realname')->from('user')->fetchPairs(); // 返回account=>realname的键值对。 $this->dao->select('class, account, realname')->from('user')->fetchGroup('class'); // 按照所属的class进行分组根据条件拼装SQL:beginIF, FI()
$this->dao->select('*')->from('user')->where('id')->gt(10)->beginIF($class == 'online')->andWhere('status')->eq('online')->fi()->fetchAll();
五、插入語句:
使用一個data對象來更新。data對象的key對應到數據表中字段名。
$user->account = 'wwccss'; $user->password = '123456'; $this->dao->insert('user')->data($user)->exec();
或者一個字段一個字段更新:
$this->dao->insert('user') ->set('account')->eq($account) ->set('password')->eq($password) ->exec();
獲得後插入的記錄id
echo $this->dao->lastInsertID();
六、更新語句:
更新語句和insert基本類似,可以使用一個data對象或者單個字段進行更新。
$user->name = 'wwccss'; $user->age = 10; $this->dao->update('user')->data($user)->where('id')->eq($userid)->limit(1)->exec(); $this->dao->update('user') ->set('account')->eq($account) ->set('password')->eq($password) ->exec()
七、REPLACE語句
replace也是需要定義一個data對象,然後調用replace方法。需要注意的是replace要保證表有主鍵或者唯一索引。
$this->dao->replace('user')->data($user)->exec();
八、刪除語句:
$this->dao->delete()->from('user')->where('id')->eq($userid)->exec();
-
禅道産品
禅道開源版 禅道企業版 禅道旗艦版 禅道IPD版 -
核心功能
産品管理 項目管理 質量管理 效能管理 -
使用文檔
基本版手冊 企業版手冊 旗艦版手冊 IPD版手冊 開發中心手冊 -
幫助中心
积分問答 常見問題 論壇交流 使用視頻 Gitee GitHub -
關于我們
關于我們 禅道軟件 最新動態 禅道活動 -
禅道社區
禅道博客 積分排行 積分商城 禅道書院 -
聯系方式
聯系人:丁芝 電話:17663906485 微信:17663906485 Q Q:1481227768北京、上海、深圳分部
友情鏈接:
ZTF自動化測試框架
ZenData測試數據生成器
喧喧IM
敏捷開發
敏捷咨詢
測試窩
悅庫網盤
Ledge知識平台
渠成軟件
ZDOO全協同企業管理軟件
融管理社區
ZenDAS數據分析工具
ZenShot跨平台截圖工具
飛信釘即時通訊解決方案
項目管理
IPD學習網
PMP百科網
艾體驗
創無記2049