PHP数据库操作类NotORM中文手册

admin 发表于 [PHP] 分类,标签: PHP操作数据库 NotORM
1

NotORM 是一个 PHP 库,用来简化和数据库的交互。最有特色的功能是处理表关联关系非常简单。另外 NotORM 的性能非常的高,设置高过内置的驱动。

 

需要的运行环境:

PHP 5.1+

PDO 及其所支持的任意数据库(通过测试,支持 MySQL, SQLite, PostgreSQL, MS SQL, Oracle)

如果我们设计有像下面这种关联结构的数据表:

那么我们可以这样来操作:

首先,连接数据库:

include "NotORM.php";
$pdo = new PDO("mysql:dbname=software");
$db = new NotORM($pdo);

 

如果我们要读取application表的所有数据,只需要这样:

foreach ($db->application() as $application) { // 获取application表的所有结果
    echo "$application[title]\n"; // 打印application表title字段的值
}

从上面我们可以看到,要查询一个表只需要使用这样的格式“$db->数据表()”就行了,是不是很便捷?呵呵。

 

我们再来进行条件查询:

$applications = $db->application()
    ->select("id, title")
    ->where("web LIKE ?", "http://%")
    ->order("title")
    ->limit(10) // 或者 ->limit(10,2),意思就是从结果集的第三行(起始行号为0)开始取10条记录
;
foreach ($applications as $id => $application) {
    echo "$application[title]\n";
}

 

读取结果:

$application = $db->application[1]; // 获取主键
$application = $db->application("title = ?", "Adminer")->fetch();

 

处理表关联:

echo $application->author["name"] . "\n"; // 获取application表的关联表author中name字段值(位于application表的默认外键字段是author_id,与author表的id字段关联)
foreach ($application->application_tag() as $application_tag) { // 获取application表的关联表application_tag中的所有结果(位于application_tag表的默认外键字段是application_id,与application表的id字段关联)
    echo $application_tag->tag["name"] . "\n"; // 打印application_tag表的关联表tag中name字段值(位于application_tag表的默认外键字段是tag_id,与tag表的id字段关联)
}

 

JOIN联合查询:

// SELECT * FROM application,author WHERE application.author_id=author.id ORDER BY author.name
foreach ($db->application()->order("author.name") as $application) {
    echo $application->author["name"] . ": $application[title]\n";
}

 

结果集分组:

echo $db->application()->max("id"); // get maximum ID
foreach ($db->application() as $application) {
    // get count of each application's tags
    echo $application->application_tag()->count("*") . "\n";
}

 

完整例子:

<?php
include "NotORM.php";
$connection = new PDO("mysql:dbname=software");
$software = new NotORM($connection);

foreach ($software->application()->order("title") as $application) { // get all applications ordered by title
    echo "$application[title]\n"; // print application title
    echo $application->author["name"] . "\n"; // print name of the application author
    foreach ($application->application_tag() as $application_tag) { // get all tags of $application
        echo $application_tag->tag["name"] . "\n"; // print the tag name
    }
}
?>
« 上一篇:[转]吉他基本指法 PostgreSQL 创建表分区:下一篇 »

1 条评论

发表我的评论