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

Laravel关联查询中无法通过get/pluck获取rides.id的问题

解决Laravel多表关联查询获取rides.id的问题

问题核心是多表存在同名的id字段,直接使用id会导致数据库无法识别要读取哪个表的字段,触发歧义错误。以下是两种可行的解决方式:

方式1:通过select指定字段获取完整数据

在查询中明确指定要获取的rides.id字段,还可以给字段起别名避免混淆:

// 移除无用的$datas行,find仅能查询单个id,后续逻辑用的是whereIn和分割后的$new
$new = explode(',', $id);

$orderss = DB::table('orders')
    ->join('jobs', 'jobs.order_id', '=', 'orders.id')
    ->join('rides', 'rides.job_id', '=', 'jobs.id')
    ->whereIn('orders.id', $new)
    ->select('rides.id as ride_id', 'orders.*', 'jobs.*') // 按需添加其他需要的字段
    ->get();

之后可以通过$orderss->first()->ride_id访问rides表的id。

方式2:直接用pluck获取rides.id集合

如果只需要rides表的id列表,直接在pluck中指定完整的字段名即可:

$new = explode(',', $id);

$rideIds = DB::table('orders')
    ->join('jobs', 'jobs.order_id', '=', 'orders.id')
    ->join('rides', 'rides.job_id', '=', 'jobs.id')
    ->whereIn('orders.id', $new)
    ->pluck('rides.id');

$rideIds会是一个包含所有目标rides.id的集合,可直接遍历使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:15:34