使用 Eloquent ORM 使用 with 模型关联查询同字段的解决

如何在with模型关联的时候,对于两个表中的相同字段都有条件的解决。不了解的话,大家可以先去看我之前在社区的一个问题,当时并没有得到很好的解决。
问答:两表使用 with 关联模型后,怎么实现不同表字段的条件查询和分组?

今天呢又遇到了这个问题,所以必须解决掉。网上资料呢,和自己要的结果不一样,emm...没有找到答案。然后自己整了一个多小时。给大家分享一下。这么些已经很清楚了吧?

        $sale_item_daily_price_info = SaleItemsDailyPriceSchedule::with([
            'schedule_info'=>function($query) use ($sale_item_id){
                   return $query->select('sale_item_id','start_time','new_price','schedule_id')
                   ->where('status','=',1)
                   ->whereIn('sale_item_id',$sale_item_id);
            }
        ])
        ->select('id')
        ->where('status','<>',9)
        ->where('start_time','>=',date('Y-m-d H:i:s'))
        ->get();

最重要的一点不要忘记,如果你想要指定字段,使用select时,一定一定要将两个表的关联字段写道里面,不然是查不到关联关系的

不过使用with的时候,各位小伙伴一定要使用对hasMany和belongsTo(一对多的关系)。关系搞乱了数据也是不对😊,注意点就好了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Reality
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

很好,依照楼主已解决,非常感谢!

4年前 评论
Complicated

我一般都习惯这么写 with('User:id,name,sex,age'), 冒号+你要查的字段

4年前 评论

为什么不考虑在field前边加上表的前缀,例如users.start_time

3年前 评论
飞飞鱼 (楼主) 3年前

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