Laravel ORM高级操作

这篇博客探讨了在Laravel ORM中如何进行高级操作,包括分页、指定顺序排序以及使用表子查询和行子查询。通过这些技巧,开发者可以更高效地处理和检索数据。

分页+排序

//forPage('当前页码','每页多少条数据')  latest()传入唯一参数进行desc排序
     $query->forPage($page, $pagesize)->latest('created_time');

指定顺序排序        

    //文章表中->分类字段: group_ids示例值 ,1,2,3,5, 
        $search_gids =1;//要查询的分组id
        $res = Article::whereRaw(" FIND_IN_SET(id,'3,2,5,4,7,8,1,12')")  //  等价  whereIn('id',[3,2,5,4,7,8])
            ->whereRaw(" FIND_IN_SET(".$search_gids.",group_ids)") //等价 where('group_ids','like',"%,{$search_gids},%") 
            ->orderBy(DB::raw(" field(id,3,2,5,4,7,1,12)"))//指定排序规则 (未指定排序的记录会在队首)
            ->get(['group_ids'])->toArray();
        dd($res);
            //注意:参数格式 find_in_set(column,'str_list'),field(column,val1,val2,val3);
            like是广泛的模糊匹配,字符串中没有分隔符,find_in_set是精确匹配,字段值以英文”,”分隔,且find_in_set 是全表扫描的


表子查询+行子查询

$res = DB::table(DB::raw("(select * from merchant where id<10) as t"))->whereIn('id',function($query)use($id){
            $query->from('merchant')->select('id')->where('id','=',$id);//行子查询
        })->get();
    //注意: 行子查询,传参需要用闭包传参的方式,子查询选择表时用from('表名')。
    其它:

//一. 变量不为空时,定义
    !defined('ORDER_SALEPAY') && define('ORDER_SALEPAY',5);   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值