escapework / laravel-steroids
Laravel 5 的强化剂。
0.7.0
2017-10-03 14:53 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- illuminate/database: ~5.4
- illuminate/filesystem: ~5.4
- illuminate/support: ~5.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.0
README
仅为让您的 Laravel 项目更加出色的工具。
版本兼容性
安装
$ composer require escapework/laravel-steroids:"0.7.*"
用法
我们提供许多基础类和辅助函数。查看一下。
首先,您的模型现在需要继承您的基类。
use EscapeWork\LaravelSteroids\Model; class Product extends Model { }
演示者
只需在您的模型中添加一个 Presentable
use EscapeWork\LaravelSteroids\Presentable; class Product extends Model { use Presentable; protected $presenter = 'App\Presenters\ProductPresenter'; }
然后创建您的演示者
use EscapeWork\LaravelSteroids\Presenter; class ProductPresenter extends Presenter { public function title() { // $this->model gives you access to your model inside the presenter return ucwords($this->model->title); } }
然后,您可以像这样调用演示者方法
$product = Product::find(1); echo $product->present->title;
可生成缩写名
想为您的模型生成缩写名?只需在您的模型中添加 Sluggable
use EscapeWork\LaravelSteroids\Sluggable; class Product extends Model { use Sluggable; }
默认情况下,当您的模型创建/更新时,Sluggable
将获取您的 $title
属性,创建一个唯一的缩写名,并将其值放在 $slug
属性中。如果您想更改用于创建缩写名的字段,只需在您的模型上放置一个 $sluggableAttr
属性。如果您想更改缩写名字段,请添加 $sluggableField
属性。
class User extends Model { use Sluggable; protected $sluggableAttr = 'name'; protected $sluggableField = 'username'; }
如果您不希望当模型更新时更新缩写名,将 $makeSlugOnUpdate
属性设置为 false
;
可缓存
可缓存是一个模型特性,当模型更改/删除时清理一些缓存键。要使用它,只需在您的模型上添加 Cacheable
特性
use EscapeWork\LaravelSteroids\Cacheable; class Product extends Model { use Cacheable; protected $cacheable = [ // here you need to put your cache keys that need to be cleared 'products.actives', 'products.all', // you can also use some attribute to be replaced // in this case, the {category_id} will be replaced with $product->category_id, 'products.category.{category_id}' ]; }
可排序
您想自动排序模型吗?很简单。
use EscapeWork\LaravelSteroids\Sortable; class Banner extends Model { use Sortable; }
然后
Banner::create(['title' => 'First Banner'])->order; // 1 Banner::create(['title' => 'Second Banner'])->order; // 2
如果您的 order
字段不叫 order
,您只需要指定
protected $sortable = [ 'field' => 'order', ];
可排序
想轻松更改查询中的 orderBy?很简单。
use EscapeWork\LaravelSteroids\Ordenable; class Product extends Model { use Ordenable; protected $ordenables = [ 'price', 'hits' ]; protected $ordenableDefault = [ 'field' => 'created_at', 'direction' => 'desc', ]; }
当查询时
$products = Product::where(...)->order('price', 'desc')->get();
如果您尝试对一个不在 $ordenables
数组中的字段进行排序,则结果将使用 $ordenableDefault
值进行排序。
许可证
查看 许可证 文件。