2011-12-13 12 views
1

我读过,如果你有一个模型,$actsAs = array('Tree'),你可以简单地设置parent_id您的种子数据,并$this->Model->recover()呼叫应该为您生成正确的lftrght值,但是当我这样做,蛋糕似乎每次都会产生随机值。这些值从非常大(以千计)到负值不等。我检查了循环引用,并没有发现。这里有什么可能是错的?如何为cakephp 2.0树生成lft和rght值?

SQL:

create table menus (
    id  int auto_increment not null, 
    parent_id int    null , 
    lft  int    null , 
    rght  int    null , 
    title  varchar(1024)  not null, 
    path  varchar(1024)  not null, 
    constraint pk_menus primary key (id) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

This is the seeded data:   After one Model->recover() 
+----+-----------+------+------+ +----+-----------+------+------+ 
| id | parent_id | lft | rght | | id | parent_id | lft | rght | 
+----+-----------+------+------+ +----+-----------+------+------+ 
| 1 |  NULL | NULL | NULL | | 1 |  NULL | 595 | 619 | 
| 7 |   1 | NULL | NULL | | 7 |   1 | 619 | 567 | 
| 6 |   1 | NULL | NULL | | 6 |   1 | 627 | 595 | 
| 5 |   1 | NULL | NULL | | 5 |   1 | 600 | 621 | 
| 4 |   1 | NULL | NULL | | 4 |   1 | 603 | 621 | 
| 3 |   1 | NULL | NULL | | 3 |   1 | 619 | 529 | 
| 2 |   1 | NULL | NULL | | 2 |   1 | 595 | 529 | 
| 8 |   2 | NULL | NULL | | 8 |   2 | 627 | 628 | 
| 13 |   3 | NULL | NULL | | 13 |   3 | 595 | 567 | 
| 12 |   3 | NULL | NULL | | 12 |   3 | 627 | 621 | 
| 11 |   3 | NULL | NULL | | 11 |   3 | 595 | 631 | 
| 10 |   3 | NULL | NULL | | 10 |   3 | 604 | 529 | 
| 9 |   3 | NULL | NULL | | 9 |   3 | 595 | 567 | 
| 14 |   5 | NULL | NULL | | 14 |   5 | 628 | 629 | 
| 15 |   5 | NULL | NULL | | 15 |   5 | 567 | 529 | 
| 16 |   5 | NULL | NULL | | 16 |   5 | 619 | 600 | 
| 17 |   5 | NULL | NULL | | 17 |   5 | 627 | 605 | 
| 21 |   6 | NULL | NULL | | 21 |   6 | 567 | 619 | 
| 20 |   6 | NULL | NULL | | 20 |   6 | 595 | 567 | 
| 19 |   6 | NULL | NULL | | 19 |   6 | 619 | 600 | 
| 18 |   6 | NULL | NULL | | 18 |   6 | 567 | 529 | 
| 22 |  10 | NULL | NULL | | 22 |  10 | 567 | 619 | 
| 23 |  11 | NULL | NULL | | 23 |  11 | 64 | 621 | 
| 24 |  12 | NULL | NULL | | 24 |  12 | 627 | 621 | 
| 25 |  13 | NULL | NULL | | 25 |  13 | 605 | 595 | 
| 32 |  16 | NULL | NULL | | 32 |  16 | 628 | 627 | 
| 31 |  16 | NULL | NULL | | 31 |  16 | 567 | 619 | 
| 30 |  16 | NULL | NULL | | 30 |  16 | 64 | 621 | 
| 29 |  16 | NULL | NULL | | 29 |  16 | 567 | 619 | 
| 28 |  16 | NULL | NULL | | 28 |  16 | 595 | 567 | 
| 27 |  16 | NULL | NULL | | 27 |  16 | 627 | 621 | 
| 26 |  16 | NULL | NULL | | 26 |  16 | 605 | 595 | 
| 33 |  17 | NULL | NULL | | 33 |  17 | 567 | 619 | 
| 37 |  19 | NULL | NULL | | 37 |  19 | 52 | 619 | 
| 36 |  19 | NULL | NULL | | 36 |  19 | 52 | 619 | 
| 35 |  19 | NULL | NULL | | 35 |  19 | 595 | 619 | 
| 34 |  19 | NULL | NULL | | 34 |  19 | 63 | 621 | 
| 38 |  20 | NULL | NULL | | 38 |  20 | 63 | 621 | 
| 39 |  20 | NULL | NULL | | 39 |  20 | 63 | 621 | 
| 40 |  21 | NULL | NULL | | 40 |  21 | 605 | 595 | 
+----+-----------+------+------+ +----+-----------+------+------+ 

回答

0

我发现,如果我分别设定了最高级别项目的lftrght12recover()现在可以正确生成值的其余部分。我觉得这是一个错误,但不是一个可怕的错误。

+0

你在哪里找到的?你能提供给我这篇文章的链接吗?谢谢 ;) – BruneX 2012-08-13 19:42:21