fatihirday/eloquent

为eloquent添加的额外功能

v0.1.0 2022-02-19 20:58 UTC

This package is auto-updated.

Last update: 2024-09-21 00:48:29 UTC


README

  • ifNull

  • ifCount

  • ifSum

  • sumColumn

  • countColumn

  • concat

  • caseWhen

  • whereLike

  • orWhereLike

  • getSql

  • dumpSql

  • ddSql


安装

bash命令

composer require fatihirday/eloquent

将提供者添加到config/app.php

'providers' => [
    // ...
    Fatihirday\Eloquent\EloquentServiceProvedir::class,
],

文档

MysqlPostgreSql准备

- ifNull

如果表达式为NULL,则返回指定的值,否则返回表达式

Model::ifNull('column', 'value', 'responseName');
// or
Model::query()->ifNull('column', 'value', 'responseName');

- ifCount

满足if条件的值计数

Model::ifCount('column', 12, 'responseName');
// or
Model::ifCount('column', '!=', 'value', 'responseName');

- ifSum

满足if条件的值总和

Model::ifSum('column', '!=', 'value', 'responseName');
// or
Model::ifSum('column', '=', 'value', 'sumColumn', 'responseName');

- sumColumn

Model::sumColumn('column'); // sum(column) as column
// or
Model::sumColumn('column', 'responseName'); // sum(column) as responseName

- countColumn

Model::countColumn('column'); // count(column) as column
// or
Model::countColumn('column', 'responseName'); // count(column) as responseName

- concat

Model::concat(['name', 'id'], 'responseName') // nameid
// or
Model::concat(['name', 'id'], 'responseName', '-') // name-id

- caseWhen

Model::caseWhen([
    'updated_at > created_at' => 'updated_at', // When Then
    'deleted_at > created_at' => 'deleted_at', // When Then
    'created_at', // Else
], 'responseName')

- whereLike

use Fatihirday\Eloquent\Libraries\Enums\Like;

Model::whereLike('columnName', 'value', Like::FIRST); 
// WHERE columnName like '%value'

Model::whereLike('columnName', 'value', Like::MIDDLE); 
// WHERE columnName like '%value%'

Model::whereLike('columnName', 'value', Like::LAST); 
// WHERE columnName like 'value%'

- orWhereLike

use Fatihirday\Eloquent\Libraries\Enums\Like;

Model::where('id', '>', 1)->orWhereLike('columnName', 'value', Like::FIRST); 
// WHERE id > 1 or columnName like '%value'

Model::where('id', '>', 1)->orWhereLike('columnName', 'value', Like::MIDDLE); 
// WHERE id > 1 or columnName like '%value%'

Model::where('id', '>', 1)->orWhereLike('columnName', 'value', Like::LAST); 
// WHERE id > 1 or columnName like 'value%'

- getSql

toSql和getBindings合并

echo Model::where('name', 'value')->getSql();
// select * from `table_name` where `name` = 'fatih'

- dumpSql

getSql的输出

Model::where('name', 'value')->dumpSql();
// select * from `table_name` where `name` = 'fatih'

- ddSql

getSql的dd输出

Model::where('name', 'value')->ddSql();
// select * from `table_name` where `name` = 'fatih'