admad / cakephp-sequence
CakePHP的序列插件,用于维护记录的有序列表
4.0.0
2023-09-29 06:58 UTC
Requires
- cakephp/orm: ^5.0
Requires (Dev)
- cakephp/cakephp: ^5.0
- phpunit/phpunit: ^10.1
README
安装
使用composer将此插件安装到您的CakePHP应用程序中
composer require admad/cakephp-sequence
然后运行CLI命令来加载插件
./bin/cake plugin load ADmad/Sequence
工作原理
此插件提供的SequenceBehavior
在添加、编辑(包括移动组)或删除记录时,在表记录的选定列中维护一个连续的整数序列(可选地进行分组)。
用法
为您的表添加SequenceBehavior
即可
$this->addBehavior('ADmad/Sequence.Sequence');
您可以根据以下示例自定义各种选项
$this->addBehavior('ADmad/Sequence.Sequence', [ 'sequenceField' => 'position', // Field to use to store integer sequence. Default "position". 'scope' => ['group_id'], // Array of field names to use for grouping records. Default []. 'startAt' => 1, // Initial value for sequence. Default 1. ]);
现在,每当添加一条新记录时,其position
字段将自动设置为当前序列中最大的值加一。
在编辑记录时,您可以设置位置为新的值,列表中其他记录的位置将自动更新以保持正确的顺序。
在查询表时,如果尚未设置排序子句,将自动添加一个排序子句来按位置字段排序。
方法
moveUp(\Cake\Datasource\EntityInterface $entity)
将记录向上移动一个位置
$modelObject->moveUp($entity);
moveDown(\Cake\Datasource\EntityInterface $entity)
将记录向下移动一个位置
$modelObject->moveDown($entity);
setOrder(array $record)
设置提供的记录列表的顺序。记录可以提供为实体数组或关联数组,如[['id' => 1], ['id' => 2]]
,或主键值数组如[1, 2]
。
致谢
感谢@neilcrookes,他为CakePHP 1.3编写的出色的Sequence Behavior启发了这个插件。