Skip to content
Advertisement

Delete unused groups in Laravel 8

I have a group model and I want to delete groups that don’t have any member.

How can I get empty groups with eloquent or SQL query ?

class Group extends Model
{
    use HasFactory;
    protected $fillable = [
        'group_name',
        'description'
    ];

    public function users(){
        return $this->hasMany(User::class);
    }
}

And this is the User model code:

class User extends Model implements AuthenticatableContract, AuthorizableContract
{
    use SoftDeletes, Authenticatable, Authorizable, HasFactory, Notifiable;

    public function getNameAttribute()
    {
        return $this->last_name.' '.$this->first_name;
    }

    public function group(){
        return $this->belongsTo(Group::class);
    }
}

Advertisement

Answer

I think whereDoesntHave work in you situation.

 Group::query()->whereDoesntHave('users')->delete();
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement