sukohi / neatness
一个 Laravel 包,用于自动为数据库查询添加排序系统,并提供 URL 在升序和降序之间切换。
Requires
- laravel/framework: ~5.0
README
一个 Laravel 包,用于自动为数据库查询添加排序系统,并提供 URL 在升序和降序之间切换。
(这是针对 Laravel 5+。 针对 Laravel 4.2)
安装
执行 composer 命令。
composer require sukohi/neatness:4.*
准备
首先,在您的模型中设置 NeatnessTrait
。
use Sukohi\Neatness\NeatnessTrait;
class Item extends Eloquent {
use NeatnessTrait;
}
其次,也在您的模型中添加配置值。
default: 默认键和方向。(必需)
columns: 您想要排序的键和列名。(必需)
symbols: 您可以在视图中使用的标签。(可选)
symbols: 您可以在视图中使用的符号。(可选)
appends: 您想要附加到 URL 的键。(可选)
protected $neatness = [
'default' => ['sort_id', 'desc'],
'columns' => [
'sort_id' => 'id',
'sort_title' => 'title',
'sort_date' => 'created_at'
],
'labels' => [
'sort_id' => 'ID',
'sort_title' => 'Title',
'sort_date' => 'Date'
],
'symbols' => [
'asc' => '<i class="fa fa-sort-asc"></i>',
'desc' => '<i class="fa fa-sort-desc"></i>',
'default' => '<i class="fa fa-sort"></i>'
],
'appends' => ['name']
];
多列: 如果您想要按多列排序,可以使用分隔符 |
,如下所示。
'columns' => [
'id_n_title' => 'id|title'
],
查询作用域: 您还可以使用 Query Scopes
代替列名。
'columns' => [
'scope_title' => 'scope::sortTitle'
],
在这种情况下,您需要在您的模型中准备一个作用域方法。(关于查询作用域)
public function scopeSortTitle($query, $direction) {
return $query->orderBy('title', $direction);
}
标签: 您可以使用 label::
前缀来调用特定方法。
'labels' => [
'title' => 'label::SortTitle'
],
在这种情况下,您需要在您的模型中准备一个方法。
public function labelSortTitle() {
return 'Your Title'.
}
使用
现在,您可以使用名为 neatness
的方法。
(在控制器中)
$items = Item::neatness()->get();
调用 neatness()
之后,您可以通过 $neatness
访问排序数据。
(在视图中)
key: 当前排序的键名。
Key: {{ $neatness->key }}
column: 当前排序的列名。
Column: {{ $neatness->column }}
direction: 当前排序的方向。《asc》或《desc》
Direction: {{ $neatness->direction }}
urls: 切换排序的 URL。
@foreach($neatness->urls as $key => $url)
{{ $key }} => {{ $url }}
@endforeach
or
$neatness->urls->get('title');
all_urls: 所有切换排序的 URL。
@foreach($neatness->all_urls as $key => $urls)
@foreach($urls as $direction => $url)
{{ $direction }} => {{ $url }}<br>
@endforeach
@endforeach
or
$neatness->all_urls->get('title'); // Array
$neatness->all_urls->get('title')['desc'] // URL
labels: 您在模型中设置的标签。
@foreach($neatness->labels as $key => $label)
{{ $key }} => {{ $label }}
@endforeach
or
$neatness->labels->get('title');
symbols: 根据排序状态提取的符号。
@foreach($neatness->symbols as $key => $symbol)
{{ $key }} => {{ $symbol }}
@endforeach
or
$neatness->symbols->get('title');
texts: 主要用于链接的文本。
@foreach($neatness->urls as $key => $url)
<a href="{{ $url }}">{{ $neatness->texts->get($key) }}</a>
@endforeach
or
$neatness->texts->get('title');
appends: 分页的数组值
{{ $items->appends($neatness->appends)->links() }}
更改默认列和方向
通过这种方式,您可以更改默认列和方向。
Item::neatness('title', 'desc')->get();
关联
您可以使用 join() 使用此包与关联。
(在控制器中)
$items = Item::join('item_details', 'item_details.item_id', '=', 'items.id')
->neatness()
->paginate(5);
(在模型中)
protected $neatness = [
'default' => ['items.id', 'desc'],
'columns' => [
'id' => 'items.id',
'title' => 'items.title',
'date' => 'items.created_at',
'address' => 'item_details.address'
]
];
许可证
此软件包在 MIT 许可证下发布。
版权所有 2016 Sukohi Kuhoh