近期用Laravel 需要搞,订单表和订单详情表联查,详情表又需要联查相关的经销商,本来是用的with联查,再引用方法联查,后面查到with的渴求式加载就想着优化一下代码,虽说两种方法都是三张表的互相联查,多学总是有好处的,就改了一下。(学习中...)
with的联查,也可以继续闭包with联查,这样用起来就很方便,开始写的有问题,一直没查出哪里的问题,一直报错,后面想到和哪个表联查就要在相关的model添加相关方法,后面就改了一下,问题完美解决。
一、这样查询可以筛选条件
// with的闭包查询,当然也不止这一种写法
$list = Commission::with(['commission_detail'=>function ($model) {
$model->with(['dealer'=>function ($query) {
$query->select(['id', 'name','phone']);
}]);
二、最简洁的写法,也可以
$list = Commission::with(['commission_detail','commission_detail.dealer'])
->where('id', $id)->first();
两种写法都已用,想用那个用那个。
推荐