where('uuid', $this->normalizeUuid($uuid)); } public function scopeByUuids($query, $uuids) { return $query->whereIn('uuid', is_array($uuids) ? $uuids : [$uuids]); } public function scopeByUuidOrName($query, $uuid) { return $query->orWhere(['uuid' => $uuid, 'name' => $this->normalizeUuid($uuid)]); } public function scopeByName($query, $name) { return $query->where(['name' => $name]); } public function normalizeUuid($uuid) { if (is_array($uuid)) $uuid = (!empty($uuid[0])) ? $this->normalizeUuid($uuid[0]) : ($uuid['uuid'] ?? $uuid['id'] ?? null); return $uuid; } protected static function bootUuidScopeTrait() { static::creating(function ($model) { if (empty($model->uuid)) $model->uuid = (string) Str::uuid(); }); } }