一天中的好时光!
最近,我一直在尝试创建Nova资源,该资源取决于提供主要资源信息的其他资源。
我有一个表 contest_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
,其中包含以下字段:
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');
}
我在Nova的index
和details
视图上获取此数据没有问题,一切都“正常”,但是,当我尝试更新资源时,出现了错误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
视图之外的其他地方都可以使用(由于用户在前端创建了提交,因此明确禁用了{{1}}视图)
答案 0 :(得分:0)
您还应该将hideWhenUpdating()
约束链接到它。
return [
BelongsTo::make('Contest', 'contest', Contests::class)
->hideWhenUpdating()
->exceptOnForms(),
BelongsTo::make('Task', 'task', ContestTasks::class)
hideWhenUpdating()
->exceptOnForms(),
BelongsTo::make('User', 'user', AccountUsers::class)
hideWhenUpdating()
->exceptOnForms(),
]