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
相关产品推荐
相关产品推荐

