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

Laravel Backpack v6 select2_from_ajax字段无法正常返回AJAX值

Laravel Backpack CRUD select2_from_ajax 按客户定价体系展示产品价格的问题解决

问题场景

在Laravel Backpack CRUD开发中,需要实现一个select2_from_ajax字段,根据客户选择的定价体系(不同客户对应不同定价体系),展示对应产品的价格选项。

遇到的问题及尝试方案

  1. 链式调用fetch+where的方式
    最初编写fetchProductPrice方法时,采用链式调用添加过滤条件:
return $this->fetch(\App\Models\Price::class)->where('price_setting_id', $priceSettingId)->where('product_id', $productId);

结果是部分产品能返回正确价格,但有部分产品返回空响应,无法稳定获取数据。

  1. 直接返回数组的方式
    尝试直接构造返回数据:
return ['id' => $price->id, 'text' => $price->nominal];

虽然能获取到所需的id和价格数据,但无法在select2_from_ajax字段中正常显示,因为不符合组件期望的响应格式。

最终解决方案

通过自定义fetch函数的配置数组,使用query回调注入过滤条件,解决了查询异常的问题:

return $this->fetch([
        'model' => \App\Models\Price::class,
        'searchable_attributes' => ['nominal'],
        'paginate' => 10,
        'query' => function($model) use ($priceSettingId, $productId) {
            return $model->where('price_setting_id', $priceSettingId)
                        ->where('product_id', $productId);
        }
    ]);

这种方式遵循Laravel Backpack fetch方法的设计规范,通过闭包在内部查询逻辑中注入过滤条件,既能保证查询稳定性,又能返回组件所需的标准响应格式(包含分页、数据列表等结构),确保字段正常渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:49:54