escapework/laravel-steroids

Laravel 5 的强化剂。

0.7.0 2017-10-03 14:53 UTC

README

Build Status Latest Stable Version Total Downloads MIT Licence

仅为让您的 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 值进行排序。

许可证

查看 许可证 文件。