Laravel Nova BelongsTo 字段在与 $request->viaResource 一起使用时出错

Laravel Nova BelongsTo field has error when using with $request->viaResource

描述:

我有一个允许创建任务的应用程序。一项任务属于一项活动。

我在活动详细信息页面中有一个创建按钮,如果用户单击该按钮,那么 URL 将如下所示: http://demo.test/nova/resources/tasks/new?viaResource=campaigns&viaResourceId=1&viaRelationship=.

如您所见,我添加了 resource id,因此我可以在创建任务时使用它们。类似的东西:

$campaign = Campaign::find($request->viaResourceId);
...
Select::make('Campaign', 'campaign_id')
                ->options([$campaign->id => $campaign->name])
                ->displayUsingLabels()
                ->withMeta(['value' => $campaign->id])
                ->hideWhenUpdating()
                ->readonly(true),

除非我将 BelongsTo 字段用于另一个关系(在本例中是任务组),否则该代码有效。似乎 BelongsTo 字段提出了另一个请求,它没有在 URL 中附加 viaResourceId,所以我无法访问我的 campaign 变量。例如,$campaign->id -> 我收到错误:Trying to get property 'id' of non-object

将字段部分的app\Nova\Task.php改为:

public function fields(Request $request)
{
    if($request->editMode=="create" && !empty($request->viaResource) && !empty($request->viaResourceId)){
        $campaign = Campaign::find($request->viaResourceId);
        return [
            ID::make()->sortable(),
            Text::make('Name')->sortable(),
            Select::make('Campaign', 'campaign_id')
                ->options([$campaign->id => $campaign->name])
                ->displayUsingLabels()
                ->withMeta(['value' => $campaign->id])
                ->hideWhenUpdating()
                ->readonly(true),
            BelongsTo::make('Group')->display('name'),
        ];
    }
    return [
        ID::make()->sortable(),
        Text::make('Name')->sortable(),
        BelongsTo::make('Campaign')->display('name'),
        BelongsTo::make('Group')->display('name'),
    ];
}

我在我的nova draft项目中检查了一下,运行良好,没有报错!