这是我的“标准”资源的代码
class Standard extends Resource
{
public static $model = '\\PackageName\\Http\\Models\\Standard';
public static $title = 'parent_id';
public static $search = [
'id',
];
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('ASN Id', 'short_asn_id')
->sortable(),
BelongsTo::make('Parent', 'getParent', 'app\Nova\Standard'),
HasMany::make('Children', 'getchildren', 'app\Nova\Standard'),
];
}
}
和这样的模型代码=>
public function getParent()
{
return $this->belongsTo(static::class, 'parent_id');
}
public function getChildren()
{
return $this->hasMany(static::class, 'parent_id','id');
}
我想在同一张桌子上建立父子关系。 不幸的是,我不断收到“类名必须是有效的对象或字符串”错误。
我尝试传递类似 \ App \ Nova \ Standard :: class 的类名。
我是Nova的新手,无法找出确切的问题。
Nova版本是最新的。 Laravel版本是5.7
答案 0 :(得分:0)
再次检查您的模型和资源名称空间。
为什么您的\\
属性中包含$model
?通常,名称空间App\Standard
(如果您有其他名称空间)则进行相应的修改。通常,名称空间中的应用是大写App\Nova\Standard
class Standard extends Resource
{
public static $model = 'App\Standard'; // Modify according to your namespace
...
BelongsTo::make('Parent', 'getParent', 'App\Nova\Standard'), // Capital A
}