|Report newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Report newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Report query() * @method static \Illuminate\Database\Eloquent\Builder|Report whereAbusive($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereAdminSeen($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereMessage($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereMeta($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereNotInterested($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereNsfw($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereObjectId($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereObjectType($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereProfileId($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereReportedProfileId($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereSpam($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereType($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Report whereUserId($value) * * @mixin \Eloquent */ class Report extends Model { protected $guarded = []; protected function casts(): array { return [ 'admin_seen' => 'datetime', ]; } public function url() { return url('/i/admin/reports/show/'.$this->id); } public function reporter(): BelongsTo { return $this->belongsTo(Profile::class, 'profile_id'); } public function reported() { $class = $this->object_type; switch ($class) { case Status::class: $column = 'id'; break; case DmMessage::class: return DmMessage::withTrashed()->find($this->object_id); default: $class = Status::class; $column = 'id'; break; } return (new $class)->where($column, $this->object_id)->first(); } public function status(): BelongsTo { return $this->belongsTo(Status::class, 'object_id'); } public function reportedUser(): BelongsTo { return $this->belongsTo(Profile::class, 'reported_profile_id', 'id'); } }