imliam / laravel-macros
通过宏和混入扩展Laravel核心类的一些杂项方法的集合
Requires
- php: ^7.1
Requires (Dev)
- larapack/dd: ^1.0
- orchestra/testbench: ^3.6.0
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-08-29 04:42:24 UTC
README
通过宏和混入扩展Laravel核心类的一些杂项方法的集合,请参阅 macros and mixins。
- Laravel宏
安装
您可以使用以下命令通过 Composer 安装此包
composer require imliam/laravel-macros:^0.1.0
使用方法
安装后,所有宏将自动注册,方法将立即可用。
Illuminate\Support\Collection
Collection@sortByDate($key = null)
按日期值对集合中的值进行排序。
要对简单的日期列表进行排序,请调用方法而不传递任何参数。
collect(['2018-01-04', '1995-07-15', '2000-01-01'])->sortByDate(); // return collect(['1995-07-15', '2000-01-01', '2018-01-04'])
要按特定键中的日期对集合进行排序,在调用方法时传递键名。
collect([ ['date' => '2018-01-04', 'name' => 'Banana'], ['date' => '1995-07-15', 'name' => 'Apple'], ['date' => '2000-01-01', 'name' => 'Orange'] ])->sortByDate('date') ->all(); // [ // ['date' => '1995-07-15', 'name' => 'Apple'], // ['date' => '2000-01-01', 'name' => 'Orange'], // ['date' => '2018-01-04', 'name' => 'Banana'] // ]
此外,您还可以传递一个回调函数到方法中以更精确地选择排序内容。
$users = User::all(); $users->sortByDate(function(User $user) { return $user->created_at; })->toArray(); // [ // ['id' => 12, 'username' => 'spatie', 'created_at' => '1995-07-15'], // ['id' => 15, 'username' => 'taylor', 'created_at' => '2000-01-01'], // ['id' => 2, 'username' => 'jeffrey', 'created_at' => '2018-01-04'] // ]
Collection@sortByDateDesc($key = null)
此方法与 sortByDate
方法具有相同的签名,但将集合按相反的顺序排序。
Collection@keysToValues()
将集合更改为由所有值等于相应键组成。
collect(['a' => 'b', 'c' => 'd'])->keysToValues(); // ['a' => 'a', 'c' => 'c']
Collection@valuesToKeys()
将集合更改为由所有键等于其相应值组成。
collect(['a' => 'b', 'c' => 'd'])->valuesToKeys(); // ['b' => 'b', 'd' => 'd']
Illuminate\Database\Query\Builder
Builder@if($condition, $column, $operator, $value)
有条件地向查询构建器添加where子句。有关更多信息,请参阅 Mohamed Said 的博客文章。
在不必拆分查询的情况下继续将方法链接到正在构建的查询。将以下代码
$results = DB::table('orders') ->where('branch_id', Auth::user()->branch_id); if($request->customer_id){ $results->where('customer_id', $request->customer_id); } $results = $results->get();
清理成这样
$results = DB::table('orders') ->where('branch_id', Auth::user()->branch_id) ->if($request->customer_id, 'customer_id', '=', $request->customer_id) ->get();
Illuminate\Http\Request
Request@replace($key, $value)
通过替换值或甚至添加新值来操作请求对象。
class Middleware { public function handle($request, \Closure $next) { $request->replace('key', 'value'); return $next($request); } }
Illuminate\Support\Facades\Route
Route@viewDir($path, $viewDirectory = '', $data = [])
模仿了 Route::view() 方法提供的功能,并通过重定向请求URI到代码库中的任何级别的视图目录来扩展它。
这使得创建包含静态内容的视图成为可能,无需担心更新路由以匹配它们或使用CMS风格的解决方案来管理它们。
例如,为了了解它是如何工作的,假设以下路由定义
Route::viewDir('/pages', 'pages');
以及以下视图目录的目录结构
views/
├── auth/
├── errors/
├── layouts/
├── pages/
│ ├── about-us.blade.php
│ ├── faq.blade.php
│ ├── privacy-policy.blade.php
│ ├── team/
│ │ ├── developers.blade.php
│ │ ├── index.blade.php
│ │ ├── management.blade.php
│ │ └── marketing.blade.php
│ └── terms-of-service.blade.php
└── partials/
将生成以下路由以匹配给定目录中的每个视图
/pages/about-us
/pages/faq
/pages/privacy-policy
/pages/team
/pages/team/developers
/pages/team/management
/pages/team/marketing
/pages/terms-of-service
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 liam@liamhammett.com 联系,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。