【发布时间】:2019-03-17 00:04:58
【问题描述】:
我有 2 个资源:产品和库存(BelongsToMany 关系)
数据透视表 (@987654321@) 有一个额外字段是 quantity(在库存中存储产品的数量)。
使用 BelongToMany 字段时,它可以正常工作,但下拉列表仍然显示所有可能的选项,即使是已经附加的选项。因此,我使用 relatableQuery 方法从查询中排除附加的。
public static function relatableQuery(NovaRequest $request, $query)
{
// Get the current resource.
$resourceId = $request->route()->parameter('resourceId');
// Get the array of product ids that already attached.
$attachedItems = app(self::$model)->whereHas('inventories', function ($query) use ($resourceId) {
$query->where('inventory_id', $resourceId);
})->get()->pluck('id');
return $query->whereNotIn('id', $attachedItems);
}
但问题是当我去编辑表单调整quantity 字段时,由于验证,它不允许我这样做。下拉菜单是空的,因为上面的代码过滤了它们。那么如何在编辑表单视图中避免上述代码呢?
我已经尝试从NovaRequest 获取parameter,但没有成功:(
感谢您的帮助!!!
【问题讨论】:
标签: php laravel laravel-nova