Laravel Nova从Belongs移除当前资源到下拉菜单

时间:2019-05-15 09:56:34

标签: php laravel laravel-nova

我刚刚开始使用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();
    });

我正在使用this package来嵌套我的类别模型。该软件包通过以下方式为父级定义关系:

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'));
}

但是我没有在relatableCategories方法中获得当前的resourceId。

是否还有其他方法可以在此方法中获取正在编辑的资源的ID。我也尝试使用$request->findResourceOrFail(),但没有运气。

请帮助。

0 个答案:

没有答案