jsadways / operationrecord
此包最新版本(0.7)没有可用的许可信息。
0.7
2024-08-16 07:39 UTC
Requires
- jsadways/scopefilter: ^0.2
- mongodb/laravel-mongodb: ^4.7
README
步骤1:使用 docker-compose 设置 MongoDB 服务器
version: "3.3"
services:
mongo:
container_name: mongo
image: mongo:7.0.12
restart: unless-stopped
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=123456
ports:
- 27017:27017
volumes:
- mongo-data:/data/db
networks:
- dev
networks:
dev:
volumes:
mongo-data:
步骤2:安装包
composer require jsadways/operationrecord
步骤3:编辑 config/database.php
'connections' => [
...
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGO_DB_URI'),
'database' => env('MONGO_DB_DATABASE', 'forge'),
]
...
]
步骤4:在 .env 文件中添加元素
MONGO_DB_URI=mongodb://admin:123456@SERVER_LOCATION
MONGO_DB_DATABASE=YOUR_DB_NAME
支持函数和参数
- set(SetDto) : 将数据设置到 MongoDB 集合
- get(array $filter) : 从 MongoDB 集合获取一个文档
- list(ListDto) : 从 MongoDB 集合获取文档列表
- SetDto : 对象包含 $data_id,$creator_id,$action_name,$data(*可选)
- ListDto : 对象包含 $filter,$sort_by,$sort_order,$per_page,$show_diff
- array filter : 检查 filter 使用情况,请参阅 JsAdways/scopeFilter
用法
创建一个模型
- 此模式描述了如何将记录存储到 MongoDB
- 例如
#app/Models/ExampleRecord.php
<?php
namespace App\Models;
use Jsadways\Operationrecord\Models\RecodeModel;
class ExampleRecord extends RecodeModel
{
protected $table = 'example_record';
}
在控制器中使用服务
use Jsadways\Operationrecord\Services\OperationRecordService;
use Jsadways\Operationrecord\Services\ListDto;
use Jsadways\Operationrecord\Services\SetDto;
use App\Models\ExampleRecord; // the custom model class to accrss MongoDB
使用示例
设置一条记录
$record = new OperationRecordService(ExampleRecord::class);
$array_data = [
'id' => 1,
'name' => 'alvin'
];
$data = new SetDto(
data_id: 133,
creator_id: 155,
action_name: 'package_test',
data: json_encode($array_data)
);
$result = $record->set($data);
获取一条记录
$record = new OperationRecordService(ExampleRecord::class);
$filter = [
'creator_id_eq' => 155,//to get record where creator_id = 155
];
$result = $record->get($filter);
获取记录列表
$record = new OperationRecordService(ExampleRecord::class);
$filter = new ListDto(
filter: ['creator_id_eq'=>2],
per_page:0, //per_page set 0 do not create pagination object
show_fidd:true
);
$result = $record->list($filter);