关于 ORM 联查的问题,求解答

order表

id code
1 O20200109144737000000005

order_details表

id order_code total_fee
1 O20200109144737000000005 461.00

现在有两个表 order必须做为主表。用ORM模型查出来数据如下

            {
                "id": 1,
                "code": "O20200109144737000000005",
                "order_details": [
                    {
                        "id": 5,
                        "order_code": "O20200109144737000000005",
                        "total_fee": "461.00"
                    }
                ]
            }

我想取出order_details的【total_fee】字段来作为where条件用。要怎么写。主表不能变。我这个只是简单的取个例子。后面会涉及到多表。求大牛们解答一下。感谢

        $user = Evaluate::select('id','order_code')->where(function ($query) use($param, $userInfo){
            // $query -> where('status', '=', '600');

         })->with('order')
        //  ->where('total_fee','461');  //这里这么写会报错
         ->where('order_details.total_fee','461');  //这里这么写会报错
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

添加订单跟订单详情的模型关系,然后类似下面这样

$user = Evaluate::select('id','order_code')->where(function ($query) use($param, $userInfo){
            // $query -> where('status', '=', '600');

         })->with(['order', 'order.details' => function ($query) use ($total_fee) {
              $query->where('total_fee', $total_fee)
         ])
         ->get();
4年前 评论

请认真阅读我们的文档.jpg

4年前 评论

1 楼用 with 是有问题的

$user = Evaluate::whereHas('order_details', function ($query) use ($total_fee) {
    $query->where('total_fee', $total_fee);
})->get();
4年前 评论

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