# PhpOrm **Repository Path**: paultest/PhpOrm ## Basic Information - **Project Name**: PhpOrm - **Description**: 用PHP实现了一个ORM,能够实现增删改查等操作 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2020-04-18 - **Last Updated**: 2024-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PhpOrm ### 一、介绍 用PHP实现了一个ORM,能够实现: * 支持MySQL、Oracle、PostgreSQL * 新增/批量新增 * 查询单条/查询所有/条件查询/组合查询 * 缓存字段 * 条件查询支持:!=、like、in、not in、between、lt、gt、is_null等 * 排序 * limit * 更新/批量更新 * 删除/批量删除
### 二、使用说明 更多的实例可以见test目录下的测试文件
#### 1. 实例化 注意:需要加载common.php文件 ```php getMessage()); } catch (\Exception $e) { var_dump('其他错误'); var_dump($e->getMessage()); } ```
#### 2. 新增 ```php '第53个应用', 'description' => '这个是描述', 'product_id' => 4, 'service_id' => 3, 'developer' => 'hello', 'operater' => 'xiaoming', 'ipmortance' => 4, 'app_type' => 'web', ]; $single_res = $model->insert($single_data); var_dump($single_res); // 新增一条数据 $batch_data = [ [ 'name' => '第54个应用', 'description' => '这个是描述', 'product_id' => 4, 'service_id' => 3, 'developer' => 'hello', 'operater' => 'xiaoming', 'ipmortance' => 4, 'app_type' => 'web', ], [ 'name' => '第55个应用', 'description' => '这个是描述', 'product_id' => 3, 'service_id' => 6, 'developer' => 'hello2', 'operater' => 'xiaoming55', 'ipmortance' => 4, 'app_type' => 'server', ], ]; $batch_res = $model->batch_insert($batch_data); var_dump($batch_res); ```
#### 3. 更新 ```php '第54个应用 - 新的', 'description' => '这个是描述 - 新的' ]; $update_res = $model->update($update_data, ['id' => 57]); var_dump($update_res); ```
#### 4. 删除 注意:一般不建议硬删除,一般是软删除 ```php '第55个应用' ]; $delete_res = $model->delete($delete_where); var_dump($delete_res); ```
#### 5. 查询 ##### A. 查询一条 getOne 第一个参数(必):where语句 第二个参数(非必):字段 ```php '第54个应用' ]; $one_app = $model->getOne($where); var_dump($one_app); $one_app = $model->getOne($where, ['id', 'description']); var_dump($one_app); ```
##### B. 查询所有 getAll 第一个参数(非必):字段 ```php getAll(['id', 'description']); var_dump($all_apps); ```
##### C. 查询多个 get 第一个参数(必):where语句 第二个参数(非必):字段 ```php 3 ]; $apps = $model->get($where, ['id', 'description']); var_dump($apps); ```
##### D. 排序 order_by 数组参数,支持多个条件组合排序,正序:asc,倒序:desc ```php 3, 'service_id' => 2 ]; $apps = $model->order_by(['id' => 'desc'])->get($where, ['id']); var_dump($apps); ``` ##### E. limit查询 limit查询,查询固定的几条 注意:limit必须在get前面才会生效 ```php 3, 'service_id' => 2 ]; $apps = $model->order_by(['id' => 'desc'])->limit(2)->get($where, ['id']); var_dump($apps); ```
##### F. 大于/小于查询 * gt:大于查询 > * lg:小于查询 < * egt:大于等于查询 >= * elt:小于等于查询 <= ```php 3, 'status' => ['elt' => 4] ]; $start_time = date('Y-m-d H:i:s', strtotime('-1 day')); $end_time = date('Y-m-d H:i:s'); $where['created_at']['gt'] = $start_time; $where['created_at']['lt'] = $end_time; ```
##### G. 不等于查询 ne 不等于 支持数组也支持字符串 ```php ['ne' => [1, 2]], 'status' => ['ne' => 3] ]; $apps = $model->get($where, ['id']); var_dump($apps); ```
##### H. like查询 ```php ['like' => '%申请%'] ]; $apps = $model->get($where, ['id', 'name']); var_dump($apps); ```
##### I. is NULL/is not NULL查询 * is_null is NULL * is_not_null is NOT NULL ```php ['is_null' => ''] ]; $apps = $model->get($where, ['id', 'name']); var_dump($apps); ```
##### J. in/not in 查询 ```php ['in' => ['appsvr', 'svr']], 'product_id' => ['not_in' => [1, 3]] ]; $apps = $model->get($where, ['id', 'name', 'app_type', 'product_id']); var_dump($apps); ```
##### K. 查询上次执行的sql 可以通过$model->last_sql来输出上次执行的sql ```php last_sql; var_dump($sql); ```
### Todo * 缓存字段 * 测试Oracle和PostgreSQL * join方法 * group by方法 * 聚合查询-count、max、min、avg、sum * 原生sql执行 * debug * error * 事务功能