phpf/database

Phpf 数据库包

dev-master 2015-01-31 21:36 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:18:25 UTC


README

使用PDO为PHP 5.3+提供的数据库抽象层。

###要求

  • PDO
  • FluentPDO(已包含)
  • Phpf\Util

##基本用法

首先,初始化数据库设置;连接本身是懒加载的。

use Phpf\Database\Database;

Database::init(
	'db_name', 
	'db_host',
	'db_user', 
	'db_password',
	'db_table_prefix',
	'pdo_driver', // must be a valid PDO driver
);

模式

表模式代表单个数据库表。它们允许模型验证数据,如列和索引。

创建并注册您的表模式。请注意,数据库是单例的,可以通过instance()访问。

Database::instance()->registerSchema(
	new \Phpf\Database\Table\Schema(array(
		'table_basename' => 'user',
		'columns' => array(
			'id' => 'INT(10) NOT NULL AUTO_INCREMENT',
			'name' => 'VARCHAR(255) NOT NULL',
			'email' => 'VARCHAR(255) NOT NULL',
			'password' => 'VARCHAR(255) NOT NULL'
		),
		'primary_key' => 'id',
		'unique_keys' => array(
			'name' => 'name'
		),
		'keys' => array(
			'email' => 'email'
		),
	)
);

使用您喜欢的任何方法安装表,或者使用\Phpf\Database\Sql\Writer

模型

现在我们需要创建一个模型(见Orm\Model)。模型通过其Database\Table对象(在注册模式时创建)操作单个表。模型将其Table对象包装起来以调用相应的数据库方法。

模型必须定义方法getTableBasename(),它必须返回表的基名(即不带前缀)。在此示例中,用户模型将返回user

$cntrl = new UserModel();
$cntrl->getTableBasename(); // returns 'user'
$rows_affected = $cntrl->insert( array(
	'name' => 'This Guy',
	'email' => 'thisguy@gmail.com',
	'password' => 'gobbldygook'
) );

if ( 0 !== $rows_affected ){
        $new_user_id = $cntrl->select(array('name' => 'This Guy'), 'id');
}

Fluent

数据库对象包装了FluentPDO,这是一个优秀的PDO流畅接口。要使用它,请调用Database::instance()->fluent()

$db = Database::instance();
$fpdo = $db->fluent();

$fpdo->from('user')
	->where(array('email', 'someguy@gmail.com'))
	// etc...