Open
Description
Привет! Извини, что по русски - много писать.
Пытаюсь сделать иерархические страницы. Для каждой страницы задаю поведение
[
'class' => NestedSetsBehavior::className(),
'leftAttribute' => 'lft',
'rightAttribute' => 'rgt',
'depthAttribute' => 'depth',
],
Дальше провожу вот такой тест, который падает:
Page::deleteAll();
$root = new Page([
'url' => 'info',
'title' => 'root',
'content' => 'info root',
]);
$root->makeRoot();
$block1 = new Page([
'url' => 'info/block1',
'title' => 'block 1',
'content' => 'block 1',
]);
$block1->appendTo($root);
$this->assertTrue($block1->isChildOf($root));
Если последний assert заменить на
$block2 = new Page([
'url' => 'info/block2',
'title' => 'block 2',
'content' => 'block 2',
]);
$block2->appendTo($root);
$this->assertTrue($block1->isChildOf($root));
$this->assertTrue($block2->isChildOf($root));
Тогда первый assert выполняется, а второй снова падает. Т.е. выходит, что первый потомок начинает определяться как потомок только после добавления второго.
Заметил это потому что после добавления всех блоков $root->children(1)->all() возвращал всех потомков кроме последнего.
В базе после этого вроде бы все в порядке.
[{
"id": 115,
"url": "info",
"title": "root",
"content": "info root",
"created": "2015-05-20 16:13:13",
"updated": "2015-05-20 16:13:13",
"lft": 1,
"rgt": 6,
"depth": 0,
},
{
"id": 116,
"url": "info/block1",
"title": "block 1",
"content": "block 1",
"created": "2015-05-20 16:13:14",
"updated": "2015-05-20 16:13:14",
"lft": 2,
"rgt": 3,
"depth": 1,
},
{
"id": 117,
"url": "info/block2",
"title": "block 2",
"content": "block 2",
"created": "2015-05-20 16:13:17",
"updated": "2015-05-20 16:13:17",
"lft": 4,
"rgt": 5,
"depth": 1,
}
]
В composer.json у меня
"creocoder/yii2-nested-sets": "*",
Подскажи, это какой-то баг или я делаю все неверно?