Just some goodies for making your Laravel Project even better.
| 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 |
$ composer require escapework/laravel-steroids:"0.7.*"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
{
}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;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 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}'
];
}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; // 2If you order field is not called order, you just need to specify:
protected $sortable = [
'field' => 'order',
];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.
See the License file.


