博主信息
博文 19
粉丝 1
评论 0
访问量 20521
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
扩展DB类方法
海阔天空
原创
1407人浏览过

扩展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、安全中的菜单表文件和动态生成菜单等,设计得非常巧妙,需要好好消化理解。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:laravel, 看好你
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学