ed-fruty / laravel-custom-model-builder
Laravel Eloquent 的自定义模型查询构建器
v1.0.0
2014-12-03 00:21 UTC
Requires
- laravel/framework: ~4.2
This package is not auto-updated.
Last update: 2024-09-24 03:08:03 UTC
README
有时候我们需要扩展基本的查询构建器。当然作用域可以解决我们很多问题,但它们不能返回值。例如我们需要使用缓存查询,但我们必须计算/读取从配置/db中的缓存时间。在每个缓存查询中写入它不是一个好的选择。因此我们可以定义自定义查询构建器。所以,就这样做。
## 安装
- 通过 composer 安装包
composer require "ed-fruty/laravel-custom-model-builder": "1.0.0"
- 在
app/config/app.php中添加服务提供者
'Fruty\LaravelModelBuilder\LaravelModelBuilderServiceProvider',
- 发布包配置
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();