. * * @link https://www.librenms.org * * @copyright 2016 Neil Lathwood * @author Neil Lathwood */ namespace App\Models; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use LibreNMS\Enum\AlertState; class Alert extends Model { public $timestamps = false; public $casts = [ 'info' => 'array', ]; // ---- Query scopes ---- /** * Only select active alerts * * @param Builder $query * @return Builder */ public function scopeActive($query) { return $query->where('state', '=', AlertState::ACTIVE); } /** * Only select active alerts * * @param Builder $query * @return Builder */ public function scopeAcknowledged($query) { return $query->where('state', '=', AlertState::ACKNOWLEDGED); } // ---- Define Relationships ---- public function device(): BelongsTo { return $this->belongsTo(\App\Models\Device::class, 'device_id'); } public function rule(): BelongsTo { return $this->belongsTo(\App\Models\AlertRule::class, 'rule_id', 'id'); } public function users(): BelongsToMany { return $this->belongsToMany(\App\Models\User::class, 'devices_perms', 'device_id', 'user_id'); } }