You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Nova 4中BelongsTo关联依赖失效:如何按分类筛选商品?

解决Laravel Nova 4中根据分类动态筛选商品的问题

原代码的问题在于:

  • 错误地用当前订单资源的uuid作为分类筛选条件,而非用户实际选中的分类ID
  • 未设置字段依赖关系,Nova无法监听分类选择的变化来更新商品选项

以下是修正后的代码:

BelongsTo::make('Category', 'category', Category::class)
    ->displayUsing(fn($category) => $category->name),

BelongsTo::make('Product', 'product', Product::class)
    // 指定依赖category字段,监听其值变化
    ->dependsOn(['category'], function (BelongsTo $field, NovaRequest $request, FormData $formData) {
        // 根据选中的分类ID筛选对应商品
        $field->query(fn($query) => $query->when(
            $formData->category,
            fn($q) => $q->where('category_uuid', $formData->category)
        ));
    })
    // 可选:不需要商品搜索功能时关闭,避免逻辑冲突
    ->searchable(false),

关键说明:

  • dependsOn(['category']):告知Nova商品字段的选项依赖分类字段,分类选择变化时自动刷新商品列表
  • FormData $formData:通过该实例获取用户当前选中的分类ID,创建、编辑场景均能正常取值
  • when条件:仅当选中分类时添加筛选规则,未选分类时默认显示全部商品(如需清空选项,可替换为$q->whereRaw('1=0'))

内容的提问来源于stack exchange,提问作者Bryant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:03:18