ggmm-one / model-helpers-for-laravel
This package is abandoned and no longer maintained.
No replacement package was suggested.
A set of helpers for building Laravel apps even faster
v1.6.0
2020-12-24 05:52 UTC
Requires
- illuminate/database: 6.*|7.*|8.*
README
A set of helpers for building Laravel apps even faster:
- CascadeSoftDeletes - emulates sql cascade on delete for SoftDelete models
- HasModelDisplayName - used by other helpers to figure out the display name
- HasOrder - creates a default order by scope
CascadeSoftDeletes
If you have a class like:
class User extends Model { use SoftDeletes; public function posts() { return $this->hasMany('App\Posts'); } }
You can modify to:
use Ggmm\Model\CascadeSoftDeletes; class User extends Model { use CascadeSoftDeletes; protected $cascadeDelete = ['posts']; public function posts() { return $this->hasMany('App\Posts'); } }
Now every time you soft delete a user, all of its posts will also be deleted.
Some notes:
- It's a good idea to wrap the delete call in a transaction;
- All models to be cascade delete must use SoftDelete or CascadeSoftDelete;
- If you forceDelete, there will be no cascading. Use standard DB functionality for that;
- It doesn't do cascade restore. But since all models are saved with the same deleted_at time you can query the database and restore those items based on the deleted_at value. (will be done in next version)
HasModelDisplayName
Adds the getModelDisplayName() function.
The default name is the class name. Example: class "ArticlePost"; display name "Article Post".
You can override the name by using a variable named modelDisplayName.
class ArticlePost { protected $modelDisplayName = 'Magazine Post'; }
HasOrder
Creates a scope that orders by based on what you have set on a variable called hasOrder.
use Ggmm\Model\HasOrder; class Post extends Model { use HasOrder; protected $hasOrder = ['created_at' => 'desc', 'title']; } //You can then do things like Post::ordered()->get();