bagtim/laravel-eloquent-case
Composer 安装命令:
composer require bagtim/laravel-eloquent-case
包简介
Adds CASE statement support to Laravel Query Builder.
README 文档
README
This packages adds CASE statement support to Laravel Query Builder. It supports Laravel 8.x & 9.x.
Usage
Add a CASE statement select on a Laravel Query
use App\Models\Invoice; use AgliPanci\LaravelCase\Query\CaseBuilder; $invoices = Invoice::query() ->case(function (CaseBuilder $case) { $case->when('balance', '<', 0)->then('Overpaid') ->when('balance', 0)->then('Paid') ->else('Balance Due'); }, 'payment_status') ->get();
Produces the following SQL query:
SELECT ( CASE WHEN `balance` < 0 THEN 'Overpaid' WHEN `balance` = 0 THEN 'Paid' ELSE 'Balance Due' END ) AS `payment_status` FROM `invoices`
Build the case query separately
use App\Models\Invoice; use AgliPanci\LaravelCase\Facades\CaseBuilder; $caseQuery = CaseBuilder::when('balance', 0)->then('Paid') ->when('balance', '>', 0)->then('Balance Due'); $invoices = Invoice::query() ->case($caseQuery, 'payment_status') ->get();
Raw CASE conditions
use App\Models\Invoice; use AgliPanci\LaravelCase\Facades\CaseBuilder; $caseQuery = CaseBuilder::whenRaw('balance = ?', [0])->thenRaw("'Paid'") ->elseRaw("'N/A'") $invoices = Invoice::query() ->case($caseQuery, 'payment_status') ->get();
Use as raw SELECT
use App\Models\Invoice; use \AgliPanci\LaravelCase\Facades\CaseBuilder; $caseQuery = CaseBuilder::whenRaw('balance = ?', [0])->thenRaw("'Paid'") ->elseRaw("'N/A'") $invoices = Invoice::query() ->selectRaw($caseQuery->toRaw()) ->get();
Available methods
use AgliPanci\LaravelCase\Facades\CaseBuilder; $caseQuery = CaseBuilder::whenRaw('balance = ?', [0])->thenRaw("'Paid'") ->elseRaw("'N/A'"); // Get the SQL representation of the query. $caseQuery->toSql(); // Get the query bindings. $caseQuery->getBindings(); // Get the SQL representation of the query with bindings. $caseQuery->toRaw(); // Get an Illuminate\Database\Query\Builder instance. $caseQuery->toQuery();
Installation
You can install the package via composer:
composer require aglipanci/laravel-eloquent-case
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.
Security
If you discover any security related issues, please email agli.panci@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
统计信息
- 总下载量: 441
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-05-14