# 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
* 事务功能