phpf / database
dev-master
2015-01-31 21:36 UTC
Requires
- php: >=5.3
- ext-pdo: *
- phpf/common: dev-master
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...