Laravel Nova удалить текущий ресурс из выпадающего списка Belongs To - PullRequest
0 голосов
/ 15 мая 2019

Я только начал использовать Laravel Nova.У меня есть таблица категорий со следующей структурой:

Schema::create('categories', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('slug')->unique();
        $table->unsignedBigInteger('parent_id')->nullable()->default(null);
        $table->unsignedInteger('_lft')->nullable()->default(null);
        $table->unsignedInteger('_rgt')->nullable()->default(null);
        $table->json('meta')->nullable()->default(null);
        $table->timestamps();
    });

Я использую этот пакет , чтобы сделать мою модель категории вложенной.Этот пакет определяет отношения для родителя следующим образом:

public function parent()
{
    return $this->belongsTo(get_class($this), $this->getParentIdName())
        ->setModel($this);
}

Я создал ресурс Nova и создал поле:

BelongsTo::make('Categories', 'parent'),

Все работает, как и ожидалось.

Теперь проблема в том, что когда я редактирую категорию в выпадающем списке родителей, я получаю все категории, включая ту, которую я редактирую.Я хочу удалить категорию, которую я обновляю, из выпадающего списка, поскольку категория не может быть ее собственным родителем.

Я пытался использовать функцию relatableCategories, например:

public static function relatableCategories(NovaRequest $request, $query)
{
    if ($request->route()->hasParameter('resourceId'))
        return $query->where('id', '<>', $request->route('resourceID'));
}

Но я не получаю текущий resourceId в методе relatableCategories.

Есть ли другой способ получитьИдентификатор ресурса, который я редактирую внутри этого метода.Я также пытался использовать $request->findResourceOrFail(), но не повезло.

Пожалуйста, помогите.

...