为了账号安全,请及时绑定邮箱和手机立即绑定

返回选择字段中的所有表行 laravel Nova

返回选择字段中的所有表行 laravel Nova

PHP
慕容708150 2023-07-08 15:30:49
我想返回选择“类别”表中除当前行之外的所有元素。我在互联网上没有找到任何相关信息,所以我来找你。我当前的选择项目:Select::make('Parent Category')                 ->options([             ])                 ->displayUsingLabels(),这是我的类别表的头部:
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我知道您在类别模型与其本身之间存在自引用关系,例如


class Category extends Model

{


    public function parent()

    {

        return $this->belongsTo(Category::class, 'parent_id');

    }


    public function children()

    {

        return $this->hasMany(Category::class, 'parent_id');

    }

}

在 Nova 中,通常,您不会将 Child 与其 Parent 之间的关系表示为 Select 字段,而是表示为 BelongsTo,例如:


    BelongsTo::make('Parent Category', 'parent', Category::class)->searchable()->nullable(),

但是您可以使用“选择”字段来预加载类别数组,这样您就可以仅在OnForms() 中过滤出当前类别。


你可以这样做:


 public function fields(Request $request)

 {

     

        $fields = [

            

            // [ All your fields ]

            

            // We'll use a Select but onlyOnForms to show all categories but current category when in Forms

            Select::make('Parent', 'parent_id')->options(Category::where('id', '!=', request()->resourceId)->pluck('name', 'id'))->onlyOnForms(),


            // Use a BelongsTo to show the parent category when in Details page

            BelongsTo::make('Parent', 'parent', Category::class)->searchable()->nullable()->showOnDetail()->hideWhenCreating()->hideWhenUpdating(),

       

        ];



}


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信