composer require illuminate/database 和 illuminate/paginationdadang'd单独使用

本文介绍了如何单独使用illuminate/database和illuminate/pagination这两个laravel组件。通过`composer require`安装指定版本后,可以利用Manager构建查询,并详细讲解了pagination的初始化过程,包括viewFactoryResolver、currentPathResolver和currentPageResolver的设置,以及如何自定义分页样式和处理路由参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单独使用illuminate//database 和illuminate/pagination

[导语]illuminate/database和illuminate/pagination作为laravel的组件。其实也可以单独拿出来使用。

database

composer require illuminate/database:5.4.36(tips:不指定版本默认使用最新的5.6.,需要php7.支持,最新版本使用了一些php7特征)

        //初始化
        $capsule = new Capsule;
        $capsule->addConnection([
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'site_km',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ]);
        //get the single;
        $capsule->setAsGlobal();
        $capsule->bootEloquent();

就可以使用database底下的Manager来构建查询了

pagination

composer require illuminate/pagination: 5.4.36

分页查询语句

$result=Capsule::table("test")
            ->select("id")
            ->orderByDesc('id')
            ->paginate(10);

在vendro\illuminate\pagination底下有个providerserver类,提供pagination的启动和注册信息的

 Paginator::viewFactoryResolver(function () {
            return $this->app['view'];
        });

        Paginator::currentPathResolver(function () {
            return $this->app['request']->url();
        });

        Paginator::currentPageResolver(function ($pageName = 'page') {
            $page = $this->app['request']->input($pageName);

            if (filter_var($page, FILTER_VALIDATE_INT) !== false && (int) $page >= 1) {
                return $page;
            }

            return 1;
        });

想单独使用就要初始化Paginator的一些信息

  • Paginator::viewFactoryResolver 可以自定义分页样式。需要返回一个重写了make方法的use Illuminate\Contracts\View\Factory接口的类
 public function make($view, $data = [], $mergeData = [])
    {
        $pagination=$data["paginator"];
        $elment=$data["elements"];
        $html=$this->bootstrapStyle($pagination,$elment);
        return new PaginationView($html,$view);

    }

$view是指定的渲染文件,$data包含paginator实例和elements实例,elements是一组包含页和url的数组。make方法返回重写了render方法的Illuminate\Contracts\View\View接口类

 public function render()
    {
        // TODO: Implement render() method.
        return $this->html;
    }

这样就可以渲染出一串html字符.

  • Paginator::currentPathResolver是解决路由使用的(例如thinkphp中按照module/controler/mentho加载),在这个方法你可以自己拼接请求参数。不配置默认为?/page=x
  $scheme=$_SERVER['REQUEST_SCHEME'];
          Paginator::currentPathResolver(function (){
          $scheme=$_SERVER['REQUEST_SCHEME'];
          $domain=$_SERVER['HTTP_HOST'];
          $requestUri="/index.php?m=".$_REQUEST["m"]."&a=".$_REQUEST["a"];
          $currentUrl=$scheme."://".$domain.$requestUri;
          return $currentUrl;
      });
  • Paginator::currentPageResolver这个方法返回当前的页数,也可以做一些非法检查等功能.
Paginator::currentPageResolver(function ($pageName="page"){
          if(isset($_REQUEST[$pageName])){
              $page=$_REQUEST[$pageName];
              if(filter_var($page,FILTER_VALIDATE_INT)!==false && (int) $page>0){
                  return $page;
              }
          }
          return 1;


      });

最后Paginator::currentPageResolver和Paginator::currentPathResolver需要在查询语句之前初始化
完整代码:

      Paginator::viewFactoryResolver($this->factoryResolver());
      Paginator::currentPageResolver($this->pageResolver());
      Paginator::currentPathResolver($this->pathResolver());
      $memberModel=new MemberModel();
      $result=$memberModel->memberList();

题外话

使用Comper中的ClassLoader加载类

 $loader = new \Composer\Autoload\ClassLoader();
        $loader->addPsr4("Modules\\", __DIR__."../Modules",true);
        // activate the autoloader
        $loader->register();
        // to enable searching the include path (eg. for PEAR packages)
        $loader->setUseIncludePath(true);

其中addPsr4方法中需要传入命名空间和时间的项目路径,命名空间和项目的路径就对应起来就可以加载使用到的项目文件

报错提示 #78 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware->handle() #79 /var/www/snipe-it/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #80 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle() #81 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #82 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\HandleCors->handle() #83 /var/www/snipe-it/app/Http/Middleware/PreventBackHistory.php(23): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #84 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\PreventBackHistory->handle() #85 /var/www/snipe-it/app/Http/Middleware/SecurityHeaders.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #86 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\SecurityHeaders->handle() #87 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #88 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() #89 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle() #90 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #91 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() #92 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle() #93 /var/www/snipe-it/app/Http/Middleware/CheckForDebug.php(25): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #94 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\CheckForDebug->handle() #95 /var/www/snipe-it/app/Http/Middleware/CheckForSetup.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #96 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\CheckForSetup->handle() #97 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #98 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle() #99 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #100 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest() #101 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Session\\Middleware\\StartSession->handle() #102 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #103 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() #104 /var/www/snipe-it/app/Http/Middleware/NoSessionStore.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #105 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\NoSessionStore->handle() #106 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #107 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\TrustProxies->handle() #108 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #109 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then() #110 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() #111 /var/www/snipe-it/public/index.php(51): Illuminate\\Foundation\\Http\\Kernel->handle() #112 {main}
最新发布
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值