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

Laravel Eloquent关联过滤:仅返回fk_customer_id非空的序列化项

解决退货页面查询返回未售出商品的问题

系统逻辑:商品售出后,serializations表的fk_customer_id字段会设为非空值;商品处于库存状态时,该字段保持为NULL。退货页面仅允许已售出的商品发起退货,但当前returnInvoice函数中,用户输入serial_emei_number查询时,仍会返回未售出的商品。

问题原因

在switch的default分支(处理serial_emei_number查询的逻辑)中,serialization模型的查询没有添加fk_customer_id非空的过滤条件,导致未售出的商品也被纳入结果集。

修改后的代码

public function returnInvoice(Request $request, string $type){
    switch ($type) {
        case 'invoice_no':
            return Receiving::with("serializeItems", "serializeItems.fk_receiving_id.fk_vendor_id")
            ->whereNotNull("fk_customer_id")
            ->whereLike(["invoice_no"], $request->q)
            ->WhereHasLike("fk_vendor_id", ["name", "primary_phone"], $request->q)
            ->WhereHasLike("serializeItems", ["serial_emei_number"], $request->q)
            ->leftJoin('vendors', 'receivings.fk_vendor_id', '=', 'vendors.id') 
            ->selectRaw("receivings.*, CONCAT(invoice_no, ' : ', vendors.name, ' : ', vendors.primary_phone) as text")
            ->groupBy("$request->column")->withSum("invoiceItem", 'subtotal')->get()->take(10);
            break;
        
        default:
            return serialization::with(["fk_receiving_id", "fk_receiving_id.fk_vendor_id", "fk_receiving_invoice_no"])
            ->whereNotNull('fk_customer_id') // 新增:过滤仅已售出的商品
            ->whereLike(["serial_emei_number"], $request->q)
            ->leftJoin('receivings', 'serializations.fk_receiving_id', '=', 'receivings.id') 
            ->leftJoin('vendors', 'receivings.fk_vendor_id', '=', 'vendors.id') 
            ->selectRaw("serializations.*, CONCAT(serial_emei_number, ' : ', receivings.invoice_no, ' : ', vendors.name) as text")
            ->groupBy("$request->column")
            ->get()->take(10);

            break;
    }
    
}

说明

在default分支的serialization查询链中添加->whereNotNull('fk_customer_id'),即可确保只返回serializations表中fk_customer_id非空的已售出商品,符合退货页面的操作权限要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 01:24:54