Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel nova覆盖/设置字段或Has的自定义值_Laravel_Laravel Nova - Fatal编程技术网

Laravel nova覆盖/设置字段或Has的自定义值

Laravel nova覆盖/设置字段或Has的自定义值,laravel,laravel-nova,Laravel,Laravel Nova,我正在使用Laravel开发一个Web应用程序。对于管理面板,我使用的是Laravel Nova。我现在要做的是,我需要使用表中的数据,该表通过另一个表具有关系。要清楚,请参见下面的数据库结构 items ===== id name price sub_category_id sub_categories ============== id name parent_category_id parent_categories ================= id name 我试图在Nov

我正在使用Laravel开发一个Web应用程序。对于管理面板,我使用的是Laravel Nova。我现在要做的是,我需要使用表中的数据,该表通过另一个表具有关系。要清楚,请参见下面的数据库结构

items
=====
id
name
price
sub_category_id

sub_categories
==============
id
name
parent_category_id

parent_categories
=================
id
name
我试图在Nova中实现的是,我希望在项目索引/列表页面上显示项目的父类别名称。首先,我不想在模型中创建这样的自定义属性

protected $appends = [
        'parent_category_name'
    ];

function getParentCategoryNameAttribute()
{
    //code here
}
因此,我可以想出两种解决办法。第一种解决方案是使用HasThrough关系。但我在诺瓦找不到它。所以,我不能用它。第二种解决方案是在渲染时重写字段值。像这样的

Text::make("fieldname")->fillUsing(function($request, $model, $attribute, $requestAttribute) {
                //$model->sub_category->parent_category - then I can return a value
                return "Parent category name";
            })->onlyOnIndex()

但是上面的代码不起作用。那么,在Nova中处理has-through关系的最佳方法是什么呢?

假设您已经正确定义了关系
子类别
父类别

项中定义关系,如下所示

public function parent_category()
{
    return $this->sub_category->parent_category();
}
然后在
项目中使用它,如下所示

BelongsTo::make('Parent Category')
    ->hideWhenCreating()
    ->hideWhenUpdating(),