ed-fruty/laravel-custom-model-builder

Laravel Eloquent 的自定义模型查询构建器

v1.0.0 2014-12-03 00:21 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:08:03 UTC


README

有时候我们需要扩展基本的查询构建器。当然作用域可以解决我们很多问题,但它们不能返回值。例如我们需要使用缓存查询,但我们必须计算/读取从配置/db中的缓存时间。在每个缓存查询中写入它不是一个好的选择。因此我们可以定义自定义查询构建器。所以,就这样做。

## 安装

  1. 通过 composer 安装包
composer require "ed-fruty/laravel-custom-model-builder": "1.0.0"
  1. app/config/app.php 中添加服务提供者
'Fruty\LaravelModelBuilder\LaravelModelBuilderServiceProvider',
  1. 发布包配置
php artisan config:publish ed-fruty/custom-model-builder

## 使用

现在,创建文件 app/ExampleBuilder.php 并将其放入此处

<?php

class ExampleBuilder extends Illuminate\Database\Eloquent\Builder
{
  
  /**
   * Add new method to builder
   *
   * @access public
   */
  public function cacheIt()
  {
    $cacheTime = Config::get('someting.where.cache.time.saved');
    
    return $this->getModel()
      ->remember($cacheTime)
      ->first();
  }
}

现在注册我们的 ExampleBuilder,编辑配置文件 app/config/ed-fruty/custom-model-builder/main.php,将 builderClass 设置为 ExampleBuilder 创建任何测试模型(或使用现有的)

class MyModel extends Eloquent
{
  // redeclare builder by using trait
  use Fruty\LaravelCustomBuilder\CustomBuilderTrait;
}

现在我们可以使用它了。

$result = MyModel::where('id', 5)->cacheIt();