legomolina / simple-orm
SimpleORM 是一个基于 PHP 的轻量级 ORM
Requires
- php: >=7.0
README
SimpleORM 是一个用 PHP 编写的轻量级对象关系映射库。这个 ORM 对我来说非常合适,但可能对你的项目来说太小了,所以你可以 fork 它并改进它,或者给我发送一个 pull request,以便我可以合并更改 :D
安装
SimpleORM 在 packagist 上托管,所以你可以通过 Composer 获取它
composer require legomolina/simple-orm
配置
在您的 index 中要求 Composer 自动加载
require '../vendor/autoload.php';
创建您的第一个模型
use \SimpleORM\Model; class MyModel extends Model { //Select the table which the model references protected static function getTableName() { return 'my_table'; } //OPTIONAL. Select the id field for the table. Default: 'id' protected static function getTableId() { return 'my_table_id'; } //Custom methods for this model //public static function myMethod(my_params) { } }
从 Model 调用 config 方法以传递 mysqli 连接参数
\SimpleORM\Model::config(array( 'name' => 'my_database_name', 'user' => 'my_user', 'pass' => '*******', 'host' => 'my_host', 'charset' => 'charset' ));
然后你就可以使用 SimpleORM 了!
用法
快速访问方法
SimpleORM 有快速选择方法来加速常用查询。如果你想从你的表中选择所有数据,你不需要输入
$result = MyModel::query()->select('*')->execute();
只需使用来自 \SimpleORM\Model
的 ::all()
方法
$result = MyModel::all()->execute();
你还可以从 \SimpleORM\Model
中简单地调用 ::getLastValue($field)
来找到你表中任何字段的最后一个值
$result = MyModel::getLastValue('my_field');
这在需要使用非自增时插入新记录时很有用
最后,你可以使用 ::findId($id)
从 \SimpleORM\Model
中检索具有 n id 的记录
$result = MyModel::findId(12);
选择查询(查看快速访问)
如果你想从你的表中选择所有数据。
$result = MyModel::query()->select('*')->execute();
如果你想添加条件。这创建了一个简单的 where(WHERE 字段 操作符 值)
$result = MyModel::all()->where()->andFilter("field", "operator", "value")->execute();
如果你想有一些条件,你可以用 AND(WHERE 字段 操作符 值 AND 字段_2 操作符_2 值_2)将它们连接起来。
$result = MyModel::all()->where()->andFilter([["field", "operator", "value"], ["field_2", "operator_2", "value_2"]])->execute();
用 or 连接它们(WHERE 字段 操作符 值 AND 字段_2 操作符_2 值_2)
$result = MyModel::all()->where()->orFilter([["field", "operator", "value"], ["field_2", "operator_2", "value_2"]])->execute();
如果你想结合两者(WHERE(字段 操作符 值 AND 字段_2 操作符_2 值_2)OR(字段_3 操作符_3 值_3))
$result = MyModel::all()->where()->andFilter([["field", "operator", "value"], ["field_2", "operator_2", "value_2"]])->or()->orFilter("field_3", "operator_3", "value_3")->execute();
你还可以检查 NULL 值(WHERE 字段 IS NULL)
$result = MyModel::all()->where()->isNull("field")->execute();
或者你可以否定(WHERE(字段 操作符 值)OR NOT(字段_2 操作符_2 值_2))
$result = MyModel::all()->where()->andFilter("field", "operator", "value")->or()->not()->andFilter("field_2", "operator_2", "value_2")->execute();
如果你不想选择所有字段。
$result = MyModel::query()->select('field_1', 'field_2')->where('field', '=', 'value')->execute();
如果你想按任何字段排序结果。
$result = MyModel::all()->order('field', 'ASC')->execute(); $result = MyModel::all()->order(['field_1', 'field_2'], ['ASC', 'DESC'])->execute();
如果你想限制返回的结果。
$result = MyModel::all()->get(1)->execute(); //get 1 without offset $result = MyModel::all()->get(1, 2)->execute(); //get 1 with offset 2
数据操作
如果你想插入值。
$insert = array('field' => 'value', 'field' => 'value'); $result = MyModel::query()->insert($insert)->execute(); //$result => true if insertion is correct, false otherwise
如果你想删除项。
$result = MyModel::query()->delete()->where('field', '=', 'value')->execute(); //important use where() with delete() //$result => true if delete is correct, false otherwise
如果你想更新项。
$update = array('field' => 'value', 'field' => 'value'); $result = MyModel::query()->update($update)->where('field', '=', 'value')->execute(); //important use where() with update() //$result => true if update is correct, false otherwise
与 ResultSet 一起工作
ResultSet 是选择查询的处理类。它允许你遍历结果,查找值或检查是否存在某些字段。
从结果获取值
做这件事最简单的方法是在 while 循环中使用 ResultSet->loop() 方法。
while($result->loop()) { $field_1 = $result->table_field_1; $field_2 = $result->table_field_2; ... $field_n = $result->table_field_n; //do something with the values }
ResultSet->loop() 遍历 ResultSet 中的所有记录,并在每次迭代中加载下一个记录的值。
你还可以执行到 n 个记录
$result->goToRegister(n); $result->table_field_1; $result->table_field_2;
或者你可以手动循环
$result->first(); //loads first register $result->next(); //loads next register if exists, otherwise it will return false $result->prev(); //loads previous register if exists, otherwise it will return false $result->last(); //loads last register
你可以手动检查当前记录是否是第一个或最后一个。
$result->isFirst(); //true | false $result->isLast(); //true | false
搜索值
使用 ResultSet,你可以搜索数据库中的所有结果中的特定值,并返回属于该值的记录。
$result->find('table_field', 'find_this_value'); //returns false if doesn't find anything
你还可以知道字段是否存在。
$result->fieldExists('table_field'); //true if exists, false otherwise
最后,你可以从所有记录中搜索一个值。它将返回第一个找到此值的记录
$result->findValue('find_this_value');
许可证
SimpleORM 在 MIT 许可证下发布。有关更多信息,请参阅许可证文件。