app-ark / eloquent-sortable
eloquent模型的排序行为
Requires
- php: >=5.6
- illuminate/database: >=5.3.0
- illuminate/support: >=5.3.0
Requires (Dev)
- orchestra/database: >=3.3.0
- orchestra/testbench: >=3.3.0
- phpunit/phpunit: >=5.7
This package is auto-updated.
Last update: 2024-09-15 21:37:59 UTC
README
此包提供了一种特质,可以将排序行为添加到Eloquent模型。
模型新记录的排序列值由该模型所有记录的排序列最大值加1确定。
该包还提供了一个查询范围,用于获取所有记录的正确顺序。
Spatie是一家位于比利时安特卫普的网络设计公司。您可以在我们的网站上找到我们所有开源项目的概述在这里。
明信片软件
您可以自由使用此包(它是MIT许可),但如果它进入了您的生产环境,您需要向我们寄送一张您家乡的明信片,注明您正在使用我们哪些包。
我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。
最好的明信片将发布在我们的网站上开源页面。
安装
此包可以通过Composer安装。
$ composer require spatie/eloquent-sortable
用法
要向您的模型添加排序行为,您必须
- 指定模型将遵循
Spatie\EloquentSortable\Sortable
- 使用特质
Spatie\EloquentSortable\SortableTrait
- 指定哪个列将用作排序列
示例
use Spatie\EloquentSortable\Sortable; use Spatie\EloquentSortable\SortableTrait; class MyModel extends Eloquent implements Sortable { use SortableTrait; public $sortable = [ 'order_column_name' => 'order_column', 'sort_when_creating' => true, ]; ... }
如果您未设置值$sortable['order_column_name']
,则包将假设您的排序列名为order_column
。
如果您未设置值$sortable['sort_when_creating']
,则包将自动将最高排序号分配给新模型;
假设MyModel
的数据库表为空
$myModel = new MyModel(); $myModel->save(); // order_column for this record will be set to 1 $myModel = new MyModel(); $myModel->save(); // order_column for this record will be set to 2 $myModel = new MyModel(); $myModel->save(); // order_column for this record will be set to 3 //the trait also provides the ordered query scope $orderedRecords = MyModel::ordered()->get();
您可以使用setNewOrder
方法为所有记录设置新顺序
/** * the record for model id 3 will have record_column value 1 * the record for model id 1 will have record_column value 2 * the record for model id 2 will have record_column value 3 */ MyModel::setNewOrder([3,1,2]);
可选地,您可以传递起始顺序号作为第二个参数。
/** * the record for model id 3 will have record_column value 11 * the record for model id 1 will have record_column value 12 * the record for model id 2 will have record_column value 13 */ MyModel::setNewOrder([3,1,2], 10);
您还可以使用这些方法将模型向上或向下移动
$myModel->moveOrderDown(); $myModel->moveOrderUp();
您还可以将模型移动到第一个或最后一个位置
$myModel->moveToStart(); $myModel->moveToEnd();
您还可以交换两个模型的顺序
MyModel::swapOrder($myModel, $anotherModel);
测试
该包包含一些与Orchestra集成的/烟测试,可以通过phpunit运行。
$ vendor/bin/phpunit
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何安全问题,请通过电子邮件freek@spatie.be而不是使用问题跟踪器。
致谢
替代方案
关于Spatie
Spatie是一家位于比利时安特卫普的网络设计公司。您可以在我们的网站上找到我们所有开源项目的概述在这里。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。