Это код моего "Стандартного" ресурса
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::класс. Не работает.
Я новичок в Nova и не мог понять точную проблему.
Нова версия последняя. Версия Laravel 5.7.






Дважды проверьте пространство имен вашей модели и ресурса.
Почему в вашем атрибуте \\ есть $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
}