octacondeveloper / php-orm
这是一个轻量级的 ORM,适用于核心 PHP 应用程序,默认支持 MySQL、Postgres 和 Sqlite 数据库引擎。
Requires (Dev)
- vlucas/phpdotenv: 5.5.x-dev
README
这是一个轻量级的 ORM,适用于核心 PHP 应用程序,默认支持 MySQL、Postgres 和 Sqlite 数据库引擎。
徽章
安装
使用 composer 安装 PHP-ORM
composer require octacondeveloper/php-orm
环境
## MYSQL Connection Example DB_CONNECTION=mysql DB_HOST= DB_PORT= DB_DATABASE= DB_USERNAME= DB_PASSWORD= # ## POSTGRES Connection Example DB_CONNECTION=postgresql DB_HOST=127.0.0.1 DB_PORT=5432 DB_DATABASE= DB_USERNAME= DB_PASSWORD= ## SQLite Connection Example DB_CONNECTION=sqlite DB_PATH="test_db_two.sqlite"
使用/示例
use PhpOrm\Query; $result = Query::table('users')->all();
或者您可以将它用作模型扩展
use PhpOrm\Model; class User extends Model { //this is optional if your table name differs from the class name protected $table = 'users'; }
然后在您的类中,您可以使用查询方法调用 User 类
use `Your-class-namespace` $result = User::all();
文档
PHP-ORM 为您提供了两种与方法交互的方式。可以通过以下方式实现:
查询
此选项允许在调用时直接指定表名,并具有多个方法。快速示例的使用方法如下:
use PhpOrm\Query;
$result = Query::table('users')->all();
可用方法
insert(array $data)
在所选表中创建一个新记录
use PhpOrm\Query;
$data = [
"name" => "Jil Harrys",
"sex" => "Male"
];
$result = Query::table('users')->insert($data);
insertBulk(array $data);
一次性插入多个记录
use PhpOrm\Query;
$data = [
[
"name" => "Jil Harrys",
"sex" => "Male"
],
[
"name" => "Lionel Messi",
"sex" => "Female"
],
[
"name" => "John Does",
"sex" => "Male"
],
];
$result = Query::table('users')->insertBulk($data);
all();
获取表上的所有记录
use PhpOrm\Query;
$result = Query::table('users')->all();
first();
获取表上的第一条记录
use PhpOrm\Query;
$result = Query::table('users')->first();
last(string $column);
获取数据表上的最后一条记录,如果没有提供列,则会根据主键或表上的第一个可用列进行排序
use PhpOrm\Query;
$result = Query::table('users')->last();
$result = Query::table('users')->last('updated_at');
rawQuery(string $sqlQuery);
这允许您将直接 SQL 字符串传递给查询实例
use PhpOrm\Query;
$result = Query::rawQuery("SELECT * FROM users");
where(string $column, string $operand, string $value);
添加查询条件
use PhpOrm\Query;
$result = Query::table('users')->where('sex','harrys');
$result = Query::table('users')->where('sex',,'!=','harrys');
andWhere(string $column, string $operand, string $value);
添加另一个强制查询条件,此条件在调用初始 "where" 方法之后执行
use PhpOrm\Query;
$result = Query::table('users')->andWhere('sex','harrys');
$result = Query::table('users')->andWhere('sex',,'!=','harrys');
orWhere(string $column, string $operand, string $value);
添加另一个可选查询条件,此条件在调用初始 "where" 方法之后执行
use PhpOrm\Query;
$result = Query::table('users')->orWhere('sex','harrys');
$result = Query::table('users')->orWhere('sex',,'!=','harrys');
orderBy(string $column, string $order);
根据列对记录进行排序,可以是 ASC 或 DESC。默认排序为 ASC
use PhpOrm\Query;
$result = Query::table('users')->orderBy('id','desc');
$result = Query::table('users')->orderBy('id');
count(string $column = null, string $value, string $operand);
根据提供的列和条件统计表上的记录数。如果没有传递参数,则统计不带任何条件的总记录数
use PhpOrm\Query;
$result = Query::table('users')->count();
$result = Query::table('users')->count('sex','male');
max(string $column);
获取最大值
use PhpOrm\Query;
$result = Query::table('users')->min('score');
min(string $column);
获取最小值
use PhpOrm\Query;
$result = Query::table('users')->min('score');
update(array $data);
更新记录
use PhpOrm\Query;
$result = Query::table('users')->where('id','233')->update([
"sex" => "female"
]);
delete();
删除记录
use PhpOrm\Query;
$result = Query::table('users')->where('id','233')->delete();
$result = Query::table('users')->delete();
begingTransaction();
开始事务
use PhpOrm\Query;
$result = Query::table('users')->begingTransaction();
commitTransaction();
提交事务
use PhpOrm\Query;
$result = Query::table('users')->commitTransaction();
rollbackTransaction();
回滚事务
use PhpOrm\Query;
$result = Query::table('users')->rollbackTransaction();
transaction($transaction);
开始数据库事务会话
use PhpOrm\Query;
$result = Query::table('users')->transaction(function(){
$result = Query::table('users')->where('id','233')->delete();
$result = Query::table('users')->delete();
});
withOne(string $table, string $foreignKey, string $primaryKey = 'id')
获取两个模型之间的一对一模型关系
use PhpOrm\Query;
$result = Query::table('users')->withOne('files','user_id','id');
withMany(string $table, string $foreignKey, string $primaryKey = 'id')
获取两个模型之间的一对多模型关系
use PhpOrm\Query;
$result = Query::table('users')->withOne('files','user_id','id');
模型
模型方法允许您为您的表创建一个类,并扩展模型基类。这允许您在类中拥有其他自定义 SQL 相关事务。它可以如下使用:
use PhpOrm\Model;
class User extends Model{
protected $table= 'users';
}
定义表变量是可选的。默认情况下,包根据您的类名获取它,并假设相应的表名。例如:
If the class name is "User", the assumption is that the table name is "users", same for "Student" and "students". But if this assumption is wrong, kindly set the value of the protected $table to override the default table name assumptions.
可用方法
insert(array $data)
在所选表中创建一个新记录
$data = [
"name" => "Jil Harrys",
"sex" => "Male"
];
$result = User::insert($data);
insertBulk(array $data);
一次性插入多个记录
$data = [
[
"name" => "Jil Harrys",
"sex" => "Male"
],
[
"name" => "Lionel Messi",
"sex" => "Female"
],
[
"name" => "John Does",
"sex" => "Male"
],
];
$result = User::insertBulk($data);
all();
获取表上的所有记录
$result = User::all();
first();
获取表上的第一条记录
$result = User::first();
last(string $column);
获取数据表上的最后一条记录,如果没有提供列,则会根据主键或表上的第一个可用列进行排序
$result = User::last();
$result = User::last('updated_at');
where(string $column, string $operand, string $value);
添加查询条件
$result = User::where('sex','harrys');
$result = User::where('sex',,'!=','harrys');
andWhere(string $column, string $operand, string $value);
添加另一个强制查询条件,此条件在调用初始 "where" 方法之后执行
$result = User::andWhere('sex','harrys');
$result = User::andWhere('sex',,'!=','harrys');
orWhere(string $column, string $operand, string $value);
添加另一个可选查询条件,此条件在调用初始 "where" 方法之后执行
$result = User::orWhere('sex','harrys');
$result = User::orWhere('sex',,'!=','harrys');
orderBy(string $column, string $order);
根据列对记录进行排序,可以是 ASC 或 DESC。默认排序为 ASC
$result = User::orderBy('id','desc');
$result = User::orderBy('id');
count(string $column = null, string $value, string $operand);
根据提供的列和条件统计表上的记录数。如果没有传递参数,则统计不带任何条件的总记录数
$result = User::count();
$result = User::count('sex','male');
max(string $column);
获取最大值
$result = User::min('score');
min(string $column);
获取最小值
$result = User::min('score');
update(array $data);
更新记录
$result = User::where('id','233')->update([
"sex" => "female"
]);
delete();
删除记录
$result = User::where('id','233')->delete();
$result = User::delete();
withOne(string $table, string $foreignKey, string $primaryKey = 'id')
获取两个模型之间的一对一模型关系
$result = User::withOne('files','user_id','id')->first();
$result = User::withOne('files','user_id','id')->all();
withMany(string $table, string $foreignKey, string $primaryKey = 'id')
获取两个模型之间的一对多模型关系
$result = User::withOne('files','user_id','id')->first();
$result = User::withOne('files','user_id','id')->all();
方法链
此包允许方法链,因为大多数方法在连接到某些方法之前不会返回结果。
use PhpOrm\Query;
$query = Query::table('cryptos')->where("name","Harrys")->orWhere("symbol","ETH")->orderBy("name", "asc")->take(2)->min("exchange_rate_dollar");
$query = Query::table('cryptos')->where("name","Harrys")->orWhere("symbol","ETH")->orderBy("name", "asc")->take(2)->first();
$query = Crypto::where("name","Harrys")->orWhere("symbol","ETH")->orderBy("name", "asc")->take(2)->min("exchange_rate_dollar");
$query = Crypto::where("name","Harrys")->orWhere("symbol","ETH")->orderBy("name", "asc")->take(2)->first();
作者
贡献
贡献总是受欢迎的!这是一个开源库,Pull Requests 非常受欢迎。