fchaose / qeephp

Automatically exported from code.google.com/p/qeephp
0 stars 0 forks source link

ActiveRecord behavior list #23

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
list 实现一个可排序、可调整列表项位置的列表。
list 
是一个双连接链表,每个元素都连接到前一个项目和后一个��
�目。

list 
的优势在于增加项目、删除项目、移动项目位置时速度快(��
�需要更新前后的项
目),缺点是无法按照按照严格索引值访问特定列表项目。��
�如要访问排序位置第三
位的项目,只能从第一个项目开始向后查找。幸运的是我们��
�特定项目的ID记录下
来,以便稍后快速访问。

--------------------

list 行为插件为 ActiveRecord 对象增加了下列方法:

// 在列表尾部或 $prev_item 项目后追加一个项目
void append($item, $prev_item = null); 

// 在列表头部或 $next_item 项目前插入一个项目
void insert($item, $next_item = null);

// 返回当前项目的下一个项目
object next();

// 返回当前项目的上一个项目
object prev();

// 判断当前项目是不是第一个
boolean isFirst();

// 判断当前项目是不是最后一个
boolean isLast();

// 下移项目位置
void moveDown();

// 上移项目位置
void moveUp();

// 与特定项目交换位置
void swap($item);

--------------------

list 行为插件实现了一个新的集合(继承自 
QColl),并添加了下列方法:

// 获得列表的第一个项目
object getFirst();

// 获得列表的最后一个项目
object getLast();

--------------------

list 行为插件拦截下列事件

boolean afterDestroy();
boolean afterCreate();

--------------------

如何使用 list 行为插件

list 插件有两种使用方式:
    在一个数据表中保存多个列表,每一个列表都属于另一个对象;
    在一个数据表中只有一个列表。

对于前一种情况,应在列表的所有者对象中使用 has_many 
指定其有关联多个列表项
目对象,并且指定该关联对象使用 list 行为插件。
后一种情况直接为列表对象指定使用 list 行为插件即可。

Original issue reported on code.google.com by dualf...@gmail.com on 13 Apr 2008 at 4:15

GoogleCodeExporter commented 8 years ago

Original comment by dualf...@gmail.com on 18 Apr 2008 at 7:08

GoogleCodeExporter commented 8 years ago

Original comment by dualf...@gmail.com on 19 Apr 2008 at 8:32

GoogleCodeExporter commented 8 years ago

Original comment by dualf...@gmail.com on 19 Apr 2008 at 8:32

GoogleCodeExporter commented 8 years ago
是增加一个字段来做这个排序索引吧?

思想非常好!~~是好东西

我觉得应该把有分类的情况考虑进去,
更大的一个问题是,分类有些时候还是跟产品多对多的关系��
�那么就需要在中间表来做这个排序
字段了

这样可能会更复杂一些

如果能够都把这些因素考虑进去了,那才是好东西 :)

Original comment by jerry2...@gmail.com on 20 Feb 2009 at 10:25