批改状态:合格
老师批语:很深刻的感想,写的很好!
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);
});
}
}感谢老师的细心详细讲解,尤其是在讲封装及数据库方面,给了我很大的帮助;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号