laravel-nestedset icon indicating copy to clipboard operation
laravel-nestedset copied to clipboard

Add selectable extraColumns to fixTree method

Open walkingCommiter opened this issue 4 years ago • 0 comments

This allows fixTree method select extra columns for model that require extra keys (for example cache key or cloud key) to work properly.

What happens: In QueryBuilder:fixTree() method there is a section where the code is choosing the "to be selected" columns. This line raises an issue for us since our Entity requires an extra column to be selected or else the fix tree will fail when trying to load nodes in the next lines.

 public function fixTree($root = null)
    {
        $columns = [
            $this->model->getKeyName(),
            $this->model->getParentIdName(),
            $this->model->getLftName(),
            $this->model->getRgtName(),
            'cloud_id', // <--- our model needs this  cloud id to be properly loaded in case of passive caching
        ];

Expected Behavior: The solution is rather simple. Just allow selecting extra columns as optional. No extra change is needed:

Here is the solution:

    public function fixTree($root = null, array $extra = [])
    {
        $columns = [
            $this->model->getKeyName(),
            $this->model->getParentIdName(),
            $this->model->getLftName(),
            $this->model->getRgtName(),
        ] // add  $extra to it;

This would solve our issue and possibly any other code that has multiple clouds.

https://github.com/lazychaser/laravel-nestedset/issues/501

walkingCommiter avatar Mar 22 '21 12:03 walkingCommiter