博客列表 >分页的封装以及数据库方面的感想

分页的封装以及数据库方面的感想

清雨的博客
清雨的博客原创
2020年06月16日 23:55:20896浏览

1、之前研究过Laravel的分页,也同时使用layui,虽然可以实现,但是实现的分页很丑,在整个过程中,对于,常用方法的封装可以说是又重新进行了温习,因为之前写一写东西都是直接在控制器中直接写,导致很多代码都是 重复,封装可以将常用代码进行封装,几段代码来实现;

2、在列表中添加与编辑进行合并,之前一直都是采用独立,没有采用过保存及编辑进行合并,这两天通过学习,也慢慢的学习这样的方式,其方式的好处在于“页面可以进一步的减少、代码的量进行减少、重复代码将很少存在”;

3、数据库问题,之前使用哦TP写过一个统计系统,现在为止数据已经达到了3万条的时候,导致了页面打开慢的问题,后期没有办法从新将列表页面更改为了layui的动态加载其在一定的意义上来说是解决了一部分的响应速度问题,其实并没有最终解决,而且其在大屏幕的显示器中只显示一半,在美观上并不达标;

今天的索引给了我很大的帮助,在数据表设计中我并没有设置任何索引,在数据量大后,造成的数据库查询数据时慢,后期可以更具今天所讲内容对相应的表进行索引设置;

附上在学习过程 github 代码仓及码云代码地址:

https://github.com/qingyuxiaoxiao/qingyu.git

https://gitee.com/daogujin/qingyu.git

demo 地址:

demo.nmgseozx.com/admin/login

分页封装代码附上:

<?php
namespace App\Providers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
use Illuminate\Database\Query\Builder as QueryBuilder;
class DBServiceProvider extends ServiceProvider
{
    public function boot()
    {
        QueryBuilder::macro('item',function (){
            $data = $this->first();
            $data = (array)$data;
            return $data;
        });

        //返回数组列表
        QueryBuilder::macro('lists',function (){
            $data = $this->get()->toArray();
            $result = [];
            foreach($data as $val){
                $result[] = (array)$val;
            }
            return $result;
        });
        //自定义索引
        QueryBuilder::macro('cates',function ($index){
            $lists = $this->get()->toArray();
            $res = [];
            foreach ($lists as $value){
                $res[$value->$index] = (array)$value;
            }
            return $res;
        });
        //分页方法
        QueryBuilder::macro('pages',function ($perPage = 15, $columns = ['*'],$pageName='page', $page = null){
            $lists = [];
            $pageobj = $this->paginate($perPage,$columns,$pageName,$page);
            $temp_list = $pageobj->items();
            foreach ($temp_list as $val) {
                $lists[] = (array)$val;
            }
            return array('total'=>$pageobj->total(),'lists'=>$lists);
        });
    }
}

感谢老师的细心详细讲解,尤其是在讲封装及数据库方面,给了我很大的帮助;

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议