博客列表 >扩展DB类方法

扩展DB类方法

海阔天空
海阔天空原创
2020年06月11日 11:01:06822浏览

扩展DB类方法

Laravel 允许对具有macroable关键词的类进行功能扩展。
Larvel提供的get()、first()方法,获得的数据都不是纯数组。通过对DB类进行功能扩展,扩展lists()、item()方法,获得的数据都是纯数组,便于统一操作。

第一步,在app/providers下创建DBServiceProvider.php

  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Support\ServiceProvider;
  4. use Illuminate\Database\Query\Builder as QueryBuilder;
  5. class DBServiceProvider extends ServiceProvider
  6. {
  7. public function boot(){
  8. //扩展lists方法,将数据转为纯数组
  9. QueryBuilder::macro('lists',function(){
  10. $data = $this->get()->all();
  11. $results=[];
  12. foreach($data as $val){
  13. $results[]=(array)$val;
  14. }
  15. return $results;
  16. });
  17. //扩展item方法,将对象转为数组
  18. QueryBuilder::macro('item',function(){
  19. $data = $this->get()->first();
  20. $results=(array)$data;
  21. return $results;
  22. });
  23. }
  24. }

第二步 在config/app.php中注册DBServiceProvider

  1. //扩展DB功能
  2. App\Providers\DBServiceProvider::class,
  3. `

在控制器中使用扩展的lists()、item()方法

  1. <?php
  2. namespace App\Http\Controllers\admins;
  3. use Illuminate\Support\Facades\DB;
  4. use App\Http\Controllers\Controller;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Auth;
  7. // 管理员管理
  8. class Admin extends Controller
  9. {
  10. public function index(){
  11. $data['admins']=DB::table('admin')->lists();
  12. foreach ($data['admins'] as $key=>$val){
  13. $group=DB::table('admin_group')->where('gid',$val['gid'])->item();
  14. $data['admins'][$key]['group_title']=$group['title'];
  15. }
  16. return view('admins/admin/index',$data);
  17. }
  18. }

总结:
1、合理扩展laravel方法,使之更适合自己的操作习惯。
2、Laravel 采用MVC模式,MVC三者各司其职。在编程时应记清当前所处的环境位置,完成相应的功能。
3、路由非常重要,控制器下的各方法都要有路由。
4、安全中的菜单表文件和动态生成菜单等,设计得非常巧妙,需要好好消化理解。

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