Доброе время суток!
Недавно я пытался создать ресурс Nova, который зависит от другого ресурса, который предоставляет информацию для основного ресурса.
У меня есть таблица test_entries , который имеет следующие поля:
со следующими отношениями
public function contest() : BelongsTo {
return $this->belongsTo(Contest::class, 'contest_id', 'id');
}
public function user() : BelongsTo {
return $this->belongsTo(User::class, 'user_id', 'id');
}
Также у меня есть таблица contest_submissions
со следующими полями:
- идентификатор
- entry_id
- task_id
- комментарий
- утвержден
- отклонен со следующими отношениями:
public function entry() : BelongsTo {
return $this->belongsTo(ContestEntry::class, 'entry_id', 'id');
}
public function user() : BelongsTo {
return $this->entry->user();
}
public function contest() : BelongsTo {
return $this->entry->contest();
}
public function task() : BelongsTo {
return $this->belongsTo(Task::class, 'task_id', 'id');
}
У меня нет проблем при получении этих данных в представлениях index
и details
из Nova все «просто работает», однако, когда я пытаюсь обновить ресурс, я получаю сообщение об ошибке, что user()
или contest()
вызывается на null
.
Я пробовал следующее,
return [
BelongsTo::make('Contest', 'contest', Contests::class)->exceptOnForms(),
BelongsTo::make('Task', 'task', ContestTasks::class)->exceptOnForms(),
BelongsTo::make('User', 'user', AccountUsers::class)->exceptOnForms(),
]
Но по какой-то причине Nova все еще пытается извлечь эти отношения, когда я прямо говорю, что не надо.
Любые идеи приветствуются, потому что они работают везде, кроме представления update
(представление create
явно отключено, поскольку представления создаются пользователем во внешнем интерфейсе)