escapework/laravel-steroids
| Install | |
|---|---|
composer require escapework/laravel-steroids |
|
| Latest Version: | 0.7.0 |
| PHP: | >=5.6.0 |
| License: | MIT |
| Last Updated: | Feb 12, 2018 |
| Links: | GitHub · Packagist |
Laravel on Steroids
Just some goodies for making your Laravel Project even better.
Version Compatibility
| Laravel | Laravel on Steroids |
|---|---|
| 5.5.x - 5.6.x | 0.7.x@dev |
| 5.4.x | 0.6.x |
| 5.3.x | 0.5.x |
| 5.2.x | 0.4.x |
| 5.1.x | 0.3.x |
Installation
$ composer require escapework/laravel-steroids:"0.7.*"
Usage
We offer a lot of base classes and helpers. Take a look.
First of all, your models now need to extend your base model.
use EscapeWork\LaravelSteroids\Model;
class Product extends Model
{
}
Presenters
Just add a Presentable in your model:
use EscapeWork\LaravelSteroids\Presentable;
class Product extends Model
{
use Presentable;
protected $presenter = 'App\Presenters\ProductPresenter';
}
And create your presenter:
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);
}
}
Then, you can just call the presenter methods like this:
$product = Product::find(1);
echo $product->present->title;
Sluggable
Want to make slugs with your model? Just add the Sluggable to your model.
use EscapeWork\LaravelSteroids\Sluggable;
class Product extends Model
{
use Sluggable;
}
By default, when your model is created/updated, Sluggable will take your $title attribute, create a unique slug and put the value in the $slug attribute.
If you want to change the field that is used to create the slug, just put a $sluggableAttr property on your model. And if you want to change the slug field, add the $sluggableField property.
class User extends Model
{
use Sluggable;
protected $sluggableAttr = 'name';
protected $sluggableField = 'username';
}
If you don't want the slug to be updated when your model is updated, set the $makeSlugOnUpdate property to false;
Cacheable
Cacheable is a model trait that clean up some cache keys when your model is changed/deleted. To use it, just add the Cacheable trait on your model:
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}'
];
}
Sortable
Do you want to sort your models automatically? Easy.
use EscapeWork\LaravelSteroids\Sortable;
class Banner extends Model
{
use Sortable;
}
Then:
Banner::create(['title' => 'First Banner'])->order; // 1
Banner::create(['title' => 'Second Banner'])->order; // 2
If you order field is not called order, you just need to specify:
protected $sortable = [
'field' => 'order',
];
Ordenable
Want to easily change the orderBy in your query? Easy.
use EscapeWork\LaravelSteroids\Ordenable;
class Product extends Model
{
use Ordenable;
protected $ordenables = [
'price',
'hits'
];
protected $ordenableDefault = [
'field' => 'created_at',
'direction' => 'desc',
];
}
Then, when querying:
$products = Product::where(...)->order('price', 'desc')->get();
If you try to order for a field that is not in the $ordenables array, your results will be sorted with the $ordenableDefault values.
License
See the License file.
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.
Version History
| Version | Released | PHP | License |
|---|---|---|---|
| 0.7.0 | >=5.6.0 | MIT | |
| 0.6.7 | >=5.6.0 | MIT | |
| 0.6.6 | >=5.6.0 | MIT | |
| 0.6.5 | >=5.6.0 | MIT | |
| 0.6.4 | >=5.6.0 | MIT | |
| 0.6.3 | >=5.6.0 | MIT | |
| 0.6.2 | >=5.6.0 | MIT | |
| 0.6.1 | >=5.6.0 | MIT | |
| 0.6.0 | >=5.6.0 | MIT | |
| 0.5.0 | >=5.5.0 | MIT | |
| 0.4.0 | >=5.5.0 | MIT | |
| 0.3.1 | >=5.5.0 | MIT | |
| 0.3.0 | >=5.5.0 | MIT | |
| 0.2.0 | >=5.4.0 | MIT | |
| 0.1.0 | >=5.4.0 | MIT |


