pkaratanev/nova-sortable

一个Laravel Nova工具。

安装量: 2,055

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 13

语言:Vue

2.0.0 2021-01-19 10:31 UTC

This package is not auto-updated.

Last update: 2024-09-26 02:56:28 UTC


README

Nova sortable

为Laravel Nova的索引资源添加排序功能

安装

composer require ofcold/nova-sortable

使用

  • 在你的数据库迁移文件中添加排序字段。

示例

$table->unsignedInteger('sort_order')->nullable();
  • 特质条目
use Ofcold\NovaSortable\SortableTrait;

class Entry extends Model
{
	use SortableTrait;
}
  • 指定资源是否需要排序。
class Example extends Resource
{
	/**
	 * Build an "index" query for the given resource.
	 *
	 * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
	 * @param  \Illuminate\Database\Eloquent\Builder  $query
	 *
	 * @return \Illuminate\Database\Eloquent\Builder
	 */
	public static function indexQuery(NovaRequest $request, $query)
	{
		$query->when(empty($request->get('orderBy')), function ($q) {
			$q->getQuery()->orders = [];
			return $q->orderBy(static::$model::orderColumnName());
		});

		return $query;
	}

	/**
	 * Prepare the resource for JSON serialization.
	 *
	 * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
	 * @param  \Illuminate\Support\Collection  $fields
	 *
	 * @return array
	 */
	public function serializeForIndex(NovaRequest $request, $fields = null)
	{
		return array_merge(parent::serializeForIndex($request, $fields), [
			'sortable'	=> true
		]);
	}
}

更改排序字段名

你只需更改条目中的'method' 'orderColumnName'。

/*
 * Determine the column name of the order column.
 */
public static function orderColumnName(): string
{
	return 'your sort order column name';
}

演示