ngocnm / laravel_helpers
LaravelHelper
v8.0.1
2024-10-14 10:03 UTC
Requires
- php: ^7.3|^8.0
- ext-json: *
- guzzlehttp/guzzle: ^7.2
- laravel/framework: ^8.75|^9.0.0|^10.0.0|^11.0.0
This package is auto-updated.
Last update: 2024-11-14 10:28:02 UTC
README
1. Cài đặt
composer require ngocnm/laravel_helpers
2. Cấu hình với laravel
- Register Service Provider
\Ngocnm\LaravelHelpers\providers\HelperServiceProvider::class
- Thêm
middleware
trong groupapi
trong fileapp/Http/Kernel.php
:
protected $middlewareGroups = [ ..., 'api' => [ ..., FilterRequestForApi::class ], ];
- Để publish file config chạy lệnh bên dưới:
php artisan vendor:publish --tag=helper_config
# Vị trí file config config/helper.php
config/helper.php
<?php return [ 'paginate' => [ 'page_max' => 30, 'limit_max' => 100 ], 'backup' => [ 'enable' => env('HELPER_BACKUP_ENABLE', true), // 'ask' => false, 'backup_driver' => env('HELPER_BACKUP_DRIVER', 'local'), 'mysqldump_path' => env('HELPER_MYSQLDUMP_PATH', '/usr/bin/mysqldump'), 'zip_path' => env('HELPER_ZIP_PATH', '/usr/bin/zip'), 'number_of_backup' => env('HELPER_NUMBER_OF_BACKUP', 5), 'database' => [ 'folder' => env('HELPER_BACKUP_FOLDER', '/var/www/html/backup/database'), 'description' => 'Backup database', 'file_name' => 'database_backup.sql', 'file_config' => env('HELPER_MYSQL_CONFIG', '/home/huyct/mysql.conf'), 'database_name' => env('HELPER_DATABASE_NAME', 'laravel'), 'tables' => [ 'table1', 'table2' ], ], ], 'deploy' => [ 'commands' => [ [ 'enable' => true, 'description' => 'Update code', 'folder' => '/var/www/html/code/', //folder run command 'cmd' => [ 'git pull origin master', 'composer update --no-dev' ], 'user' => '',//User run command (default user ssh) 'ask' => false ] ], 'servers' => [ [ 'enable' => true, 'name' => 'ai_master', 'ip' => '127.0.0.1', 'user_name' => 'ubuntu' ] ], ], 'log' => [ 'driver' => env("HELPER_LOG_DRIVER", 'slack'), 'enable' => env("HELPER_LOG_ENABLE", true), 'connections' => [ 'slack' => [ 'name' => 'Send Message To Slack', 'slack_error_url' => env("SLACK_ERROR_URL"), 'slack_log_url'=>env("SLACK_LOG_URL"), ], ] ] ];
- Cấu hình env:
SLACK_ERROR_URL= SLACK_LOG_URL= HELPER_LOG_DRIVER= HELPER_LOG_ENABLE= HELPER_LOG_QUEUE_NAME= IP_SERVER= APP_NAME=
- Thêm vào config/app.php:
'ip_server' => env('IP_SERVER', 'localhost'), 'app_name' => env('APP_NAME0', 'localhost'),
- Cấu hình trong class
model
namespace App\Models; class User { static $schema = [ "id" => [ "type" => "int", "insert" => false, "query_condition" => true, "sort" => true ], "title" => [ "type" => "string", "insert" => false, "query_condition" => true, "sort" => true, "fulltext_search" => true ], "created_at" => [ "type" => "string", "insert" => false, "query_condition" => false, "required_when_create" => false, "sort" => true ], "updated_at" => [ "type" => "string", "insert" => false, "query_condition" => false, "required_when_create" => false, "sort" => true ] ]; }
- Nếu this->app->singleton không hoạt động thì thêm vào Exceptions/Handler:
public function register(): void { $this->reportable(function (Throwable $e) { \Ngocnm\LaravelHelpers\exceptions\SendLog::SendLog($e); } }
Mô tả :
type
: Kiểu dữ liệu, bao gồm:int
,string
,double
insert
: Có được thêm dữ liệu từ request param hay khôngquery_condition
: Truy vấn có điều khiệnrequired_when_create
: Yêu cầu bắt buộc với validate requestsort
: Truy vấnorder by
,fulltext_search
: Tìm kiếm bằng fulltext search trong mysql- Lấy tham số từ request:
Ngocnm\LaravelHelpers\Helper::BaseApiRequest()->getFields(); Ngocnm\LaravelHelpers\Helper::BaseApiRequest()->getFields(); ...
- Đăng ký với Model:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Ngocnm\LaravelHelpers\eloquent\BaseModel; // add line class UserLog extends Model { use HasFactory,BaseModel;// add line protected $table = 'user_logs'; }
3. Khai báo trong hàm lấy dữ liệu:
// Filter request function getUserBy Api(){ $model = UserLog::baseQueryBuilder(UserLog::class);//add line ... return $model->get(); }
4. Các tham số lấy dữ liệu từ api
select
:fields=field_1,field_2,field_3,...
where
:where=field_1+condition_1,field_2+condition_2,...
where_less
:where=field_1+condition_1,field_2+condition_2,...
where_than
:where=field_1+condition_1,field_2+condition_2,...
where_not
:where_not=field_1+condition_1,field_2+condition_2,...
where_in
:where_in=field_1+condition_1,field_2+condition_2,...
hoặcwhere_in[]=field_1+condition_1,field_2+condition_2&where_in[]=field_2+condition_3,field_3+condition_4
limit
:limit=30
(mặc định là 30)page
:page=1
(mặc định là 1)ofset
:offset=30
(mặc định sẽ tính từ tham sốlimit
vàpage
)order_by
:order_by=field_1+desc,field_2+asc,...
field_search
:field_search=column_search
(Trường tìm kiếm, đi kèm vớifield_search
)keyword
:keyword=something
(Từ khóa tìm kiếm, đi kèm vớikeyword
)with
:with=relashtionship_1+field_1,field_2-relashtionship_2+field_1,field_2
Lưu ý
: Để dùng được param with
cần khai báo quan hệ trong class Model:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Ngocnm\LaravelHelpers\eloquent\BaseModel; class UserLog extends Model { use HasFactory,BaseModel; protected $table = 'user_logs'; const relationship_device_fields = ['id','name','ip']; // add line public function device(){ // add function return $this->belongsTo(Device::class, 'device_id','id'); } }
5. Tùy chỉnh
- Tùy chỉnh cấu hình
limit_max
,page_max
;
Ngocnm\LaravelHelpers\Helper::BaseApiRequest()->setLimitMax(100); Ngocnm\LaravelHelpers\Helper::BaseApiRequest()->setPageMax(100);
6. Tự động pull code , run command trên nhiều server
- Tùy chình tham số
deploy
trong fileconfig/helper.php
- Thêm ssh key remote giữa các
server master
và cácserver cluster
php artisan helper:deploy-app
7. Log query cho api
- Cấu hình
env
:
HELPER_QUERY_LOG=true
- Thêm middleware
api
:
protected $middlewareGroups = [ ..., 'api' => [ ..., LogQueryForApi::class ], ];
- Response api sẽ trả về bao gồm tham số
log_query
:
{ "data": {}, "query_log": {} }
8. Cấu hình job Send Message To Slack cho server
- Cấu hình supervisor:
cd /etc/supervisor/conf.d
vim send-log.conf
- Copy đoạn cấu hình:
[program:send-log] process_name=%(program_name)s_%(process_num)02d command=/usr/bin/php /path/to/artisan queue:work --queue=send-log --sleep=3 --max-time=3600 autostart=true autorestart=true stopasgroup=true killasgroup=true user=eztech numprocs=1 redirect_stderr=true stdout_logfile=/var/log/supervisor/send-log.log stopwaitsecs=3600
9. Config Backup Database Command
- Config secret of mysql on Server:
cd /home/ubuntu/
touch mysql.conf
[client]
user=root
password=Test@123456
- Create folder of backup:
cd /var/www/html/ mkdir backup cd backup mkdir database
- Config .env for backup command:
HELPER_BACKUP_ENABLE=true HELPER_BACKUP_DRIVER=local HELPER_MYSQLDUMP_PATH=/usr/bin/mysqldump HELPER_ZIP_PATH=/usr/bin/zip HELPER_NUMBER_OF_BACKUP=5 HELPER_BACKUP_FOLDER=/var/www/html/backup/database HELPER_MYSQL_CONFIG=/home/ubuntu/mysql.conf HELPER_DATABASE_NAME=laravel
- Command of Backing up database:
php artisan helper:backup-database