| Package Data | |
|---|---|
| Maintainer Username: | matfish2 |
| Maintainer Contact: | matfish2@gmail.com (Matanya Fishaimer) |
| Package Create Date: | 2016-01-25 |
| Package Last Update: | 2016-08-11 |
| Home Page: | https://packagist.org/packages/fish/eloquent-cascade |
| Language: | PHP |
| License: | MIT |
| Last Refreshed: | 2025-11-21 15:08:39 |
| Package Statistics | |
|---|---|
| Total Downloads: | 2,059 |
| Monthly Downloads: | 0 |
| Daily Downloads: | 0 |
| Total Stars: | 3 |
| Total Watchers: | 1 |
| Total Forks: | 1 |
| Total Open Issues: | 0 |
This package offers a simple trait that leverages the Eloquent delete event to recursively delete all specified relations for a given model.
Begin by installing this package through Composer. Edit your project's composer.json file to require fish/eloquent-cascade.
"require": {
"fish/eloquent-cascade": "^1.0"
}
Next, update Composer from the Terminal:
composer update
Include the trait in a parent model and make the other models extend it:
namespace App;
use Illuminate\Database\Eloquent\Model;
use Fish\Cascade\Cascade;
class BaseModel extends Model
{
use Cascade;
}
Add the relations you wish to delete to a protected $cascade array on the model. e.g:
class User extends BaseModel
{
protected $cascade = ['author'];
public function author() {
return $this->hasOne(Author::class);
}
}
class Author extends BaseModel
{
protected $cascade = ['posts'];
public function user() {
return $this->belongsTo(User::class);
}
public function posts() {
return $this->hasMany(Post::class);
}
}
class Post extends BaseModel
{
protected $cascade = ['comments'];
public function comments() {
return $this->hasMany(Comment::class);
}
}
If you are using a trait for polymorphic relations and want to add this relation to the $cascade array, override the protected getCascade method.
Suppose you have a Locale trait:
trait Locale {
public function locale() {
return $this->morphMany(Locale::class, 'translatable');
}
protected function getCascade() {
return array_merge($this->cascade, ['locale']);
}
}