TP5 闭包函数构建查询器

问题描述

在建立数据库表与表之间的关系的时候,product表关联 product_img 表, product_img 表又关联到img 表。

但是在商品详情展示中吗,必须要求product_img的图片按顺序排列,所以,在数据库里设计了一个字段 ‘order’排序用。

以往解决方案

按照往常的惯例,我们在模型中直接对字段进行排序即可

    public static function getMostRecent($count){
        $product = self::limit($count)
            ->order('create_time','desc')
            ->select();
        return $product;
    }

但是这里是在Product模型中对ProductImageProductPropertry 进行关联,而商品属性的图片是在ProductImage 模型之下的,所以必须另寻他法。

新的解决方案

    public static function getProductDetail($id)
    {
        //对order字段进行排序
        $product = self::with([
            'imgs' => function($query){
            $query->with('imgUrl')
                ->order('order','ace');
            }
        ])
            ->with(['properties'])
            ->find($id);
        return $product;
    }

这里在链式查询时写了一个闭包函数,层层深入,可见闭包函数的灵活性之高。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值