NewX ORM
NewX ORM是一个简洁的数据库对象关系映射。, (*1)
安装说明
使用composer一键安装, (*2)
composer require beansir/newx-orm
数据库配置文件
创建一个数据库配置文件,存放于你自己的项目中,格式如下, (*3)
<?php
return [
'default' => [
'host' => '127.0.0.1', // 地址
'user' => 'user', // 用户名
'password' => 'password', // 密码
'db' => 'db', // 数据库名
'type' => 'mysqli' // 连接方式
],
];
加载ORM
请务必在应用运行之前加载, (*4)
<?php
$db = require 'xxx/db.php'; // 上一步配置的数据库文件
\newx\orm\NewxOrm::load($db);
继承Model
<?php
class UserModel extends \newx\orm\base\Model
{
public $table = 'user'; // 数据表名,默认default
public $db = 'default'; // 数据库配置,默认default
}
使用指南
创建数据模型
<?php
// @return Model_User
$user = UserModel::model();
查询所有记录
<?php
// @return array 模型对象数组
// 方式一
$user = UserModel::model()->all();
// 方式二
$user = UserModel::getAll();
查询单条记录
<?php
// @return Model_User
// 方式一
$user = UserModel::model()->one();
// 方式二
$user = UserModel::getOne();
定义数组结果集
<?php
// @return array 结果集数组
// 方式一
$user = UserModel::model()->asArray()->one();
// 方式二
$user = UserModel::model()->one();
$user = $user->toArray();
条件查询
<?php
// 方式一
$user = UserModel::model()->where(['id' => 1])->one();
// 方式二
$user = UserModel::getOne(['id' => 1]);
// 方式三
$user = UserModel::getOne(1); // 主键查询
表关联
<?php
// @return 关联的模型对象或对象数组,取决于hasOne还是hasMany
// 方式一
$log = UserModel::getOne(1)->getLog();
// 方式二
$log = UserModel::getOne(1)->log;
// 模型中关联写法
class UserModel extends \newx\orm\base\Model
{
// 关联Model_Log
public function getLog()
{
return $this->hasOne(
LogModel::className(), // 关联表类名
'user_id', // 关联表字段名
'id' // 本表字段名
);
}
}
表连接
<?php
// 左连接
$user = UserModel::model()
->leftJoin(
'table name', // 连接表名
'join field', // 连接表字段名
'self field' // 本表字段名
)
->all();
// 右连接
$user = UserModel::model()->rightJoin('table name', 'join field', 'self field')->all();
// 内连接
$user = UserModel::model()->innerJoin('table name', 'join field', 'self field')->all();
执行SQL语句
<?php
$db = NewxOrm::getDb();
// 查询 @return array
$db->query($sql);
// 增删改 @return int
$db->execute($sql);
事务管理
<?php
$db = NewxOrm::getDb();
// 开启事务 @return bool
$db->beginTransaction();
// 提交事务 @return bool
$db->commit();
// 事务回滚 @return bool
$db->rollback();