Я читал, что если у вас есть модель $actsAs = array('Tree')
, вы можете просто установить parent_id
для ваших начальных данных, и вызов $this->Model->recover()
должен сгенерировать правильные lft
и rght
значения для вас, но когда я делаю это, Cake, кажется, генерирует случайные значения каждый раз.Значения варьируются от очень больших (в тысячах) до отрицательных значений.Я проверил круговые ссылки и не нашел ни одного.Что здесь может быть не так?
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 |
+----+-----------+------+------+ +----+-----------+------+------+