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

Laravel使用高级join关联3张表查询报strtolower参数错误如何解决

涉及表结构

  • cart_items 表
    Cart table
  • ecomm_products 表
    ecomm
  • ecomm_sellers 表
    enter image description here

报错原因

你调用Laravel查询构造器的join方法时参数传递不符合语法规范:join方法一次仅支持关联一张表,你的写法中同时传入两个表名作为前两个参数,第三个参数传入关联逻辑闭包,此时Laravel会误将闭包识别为关联操作符(如=、>等),底层尝试对操作符做小写转换时,就触发了strtolower(): Argument #1 ($string) must be of type string, Closure given报错。


修复方案

将三张表的关联逻辑拆分,分两次调用join方法分别关联ecomm_products和ecomm_sellers即可,修改后代码如下:

$result = DB::table('cart_items')
    ->join('ecomm_products', function($join){
        $join->on('ecomm_products.id', '=', 'cart_items.product_id')
            ->where('cart_items.order_id', '=', 1);
    })
    ->join('ecomm_sellers', 'ecomm_products.seller_id', '=', 'ecomm_sellers.id')
    ->where('cart_items.user_id', '=', Auth::user()->id)
    ->select('ecomm_products.product_name','ecomm_products.showcase_image','ecomm_products.selling_price','cart_items.quantity','cart_items.id')
    ->get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:24:03