mzphp DAO 数据层
第一步:配置 conf 文件中的 db。
第二步:创建 user 表:
CREATE TABLE `user` (
`id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '',
PRIMARY KEY (`uid`)
) DEFAULT CHARSET=utf8 COMMENT='user'
第三步,model 层有二种调用方法。
第一种,不定义 model,直接使用
<?php
!defined('FRAMEWORK_PATH') && exit('Accesss Deined');
class user_control extends base_control {
public function on_index(){
// SELECT * FROM user WHERE id =1
$user = DB::T('user')->get(1);
// ...
}
}
此方法用于简单的 DAO 层调用。
第二种,在项目 model 或 core 目录中,新建一个 user.class.php 定义 user 继承自 base_model,
<?php
!defined('FRAMEWORK_PATH') && exit('Accesss Deined');
class user extends base_model {
function __construct() {
parent::__construct('user', 'id');
}
}
?>
(小提示:为什么 DAO 建立在 model 和 core 目录都可以?区别:model 是动态加载, core 是预编译在 runtime.php 中,你可以根据 DAO 使用的频率来规划放在哪个目录)
在控制器中使用
<?php
!defined('FRAMEWORK_PATH') && exit('Accesss Deined');
class user_control extends base_control {
public function on_index(){
// SELECT * FROM user WHERE id =1
$user = $this->user->get(1);
// ...
}
}
mzphp 中,控制器会自动加载并初始化对应的 model 层。
另外:
- mzphp 也支持原生查询 SQL,使用以下方法:
// add table prefix
$table = DB::table('user');
// build SQL
$sql = sprintf("SELECT * FROM %s WHERE id=%d", $table, 1);
// get query and return first row
$first_row = DB::query($sql, 1);
// get query
$query = DB::query($sql);
while($val = DB::fetch($query)){
log::info($val);
}
// select method
// get first row from user where id =1
$user = DB::select('user', array('id'=>1), ' id ASC', 0);
// get all user array
$user_list = DB::select('user');
// get user count
$user_count = DB::select('user', 0, 0, -2);