baum
baum copied to clipboard
Wrong rgt-value when creating child node on PHP 7.2
Wrong rgt
-value when creating child node on PHP 7.2
I have this test:
/** @test **/
public function store_category()
{
// Arrange
$root = factory(\App\Category::class)->create( ['name' => 'Root', 'depth' => 0]);
// Act
$response = $this->actingAsAdmin('api')
->json('POST', $this->endpoint, [
'name' => 'New Category',
'parent_id' => $root->id,
]);
// Assert
$response->assertStatus(200);
$response->assertJson([
'tree' => [
'root' => true,
'name' => 'Root',
'children' => [
[
'name' => 'New Category',
'lft' => 2,
'rgt' => 3
]
]
]
]);
$this->assertDatabaseHas('categories', [
'name' => 'New Category',
'slug' => 'new-category',
'lft' => 2,
'rgt' => 3
]);
$this->assertDatabaseHas('categories', [
'name' => 'Root',
'lft' => 1,
'rgt' => 4
]);
}
This works on PHP 7.0 and PHP 7.1 but fails with PHP 7.2
To get the test to pass on PHP 7.2 the last assertion (the one checking the root in the database) has to be changed to below
$this->assertDatabaseHas('categories', [
'name' => 'Root',
'lft' => 1,
'rgt' => 3
]);
The actual store function in my app
public function store(CreateCategoryRequest $request)
{
$parent = $request->input('parent_id');
$category = new Category;
$category->fill($request->all());
$category->save();
$category->makeChildOf($parent);
return $this->categoryTree($request, $category);
}