Blogger Information
Blog 19
fans 1
comment 0
visits 15270
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
扩展DB类方法
海阔天空
Original
821 people have browsed it

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

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:laravel, 看好你
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post