imliam/laravel-macros

通过宏和混入扩展Laravel核心类的一些杂项方法的集合

v0.1.0 2018-07-13 23:25 UTC

This package is auto-updated.

Last update: 2024-08-29 04:42:24 UTC


README

Latest Version on Packagist Total Downloads License

通过宏和混入扩展Laravel核心类的一些杂项方法的集合,请参阅 macros and mixins

安装

您可以使用以下命令通过 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)。有关更多信息,请参阅 许可证文件