请教个一DB查询语句

这是模型查询方法

$orderIds = Order::query()->where('order_type','取消')->get(['id'])->pluck('id')->toArray();

$result = DB::table('order_details')->whereNotIn('order_id',$orderIds)->get();

请教大佬们这种用句用 DB 门面 join 联表怎么写。我写了半天是错的。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
随波逐流
最佳答案
// 强烈建议使用子查询
$result = OrderDetail::query()->whereNotIn('order_id', Order::query()->where('order_type','取消')->select('id'))->get();
2年前 评论
讨论数量: 12
$result = Order::query()->where('order.order_type', '<>', '取消')->join('order_details', 'order.id', '=', 'order_details.order_id')->get();
2年前 评论
浪里小白龙 (楼主) 2年前
忆往昔弹指间 (作者) 2年前

whereNotIn(‘order_id’,$orderIds) 这还怎么 join

order_type 类型建议用 tinyint

2年前 评论
DB::table('order_details')->join("order","order.id","=","order_details.order_id")
            ->where("order.order_type","!=","取消")
            ->select([
                "order_details.*"
            ])->get();


            DB::table('order_details')
 ->whereRaw("exists(select id from order where order.id = order_details.order_id and order.order_type != '取消')")
 ->get();
2年前 评论

没明白为什么要用\DB

2年前 评论
浪里小白龙 (楼主) 2年前
skys215 (作者) 2年前

这个应该用 关联模型里 基于存在的查询

2年前 评论
随波逐流
// 强烈建议使用子查询
$result = OrderDetail::query()->whereNotIn('order_id', Order::query()->where('order_type','取消')->select('id'))->get();
2年前 评论

嫌弃,order_type还用中文

2年前 评论
    $datas = $brandModel->from('主表名 AS br')
            ->leftjoin('附表名 AS st', 'br.create_user', '=', 'st.staff_id')
            ->where('br.id', $parameters['id'])
            ->select('br.id', 'br.titles', 'br.created_at', 'br.create_user', 'st.staff_name')
            ->first()
            ->toArray();
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!