Files
einundzwanzig-app/app/Models/City.php
T
HolgerHatGarKeineNode a2a640809a Refactor components and models:
- 🔥 Removed deprecated `placeholder-pattern` component.
- 🧹 Simplified and cleaned up Blade views by removing unused comments and sections.
- 🗂️ Extracted `SetsCreatedBy` concern for DRY and reused it across models.
- 🔧 Consolidated configuration for Horizon `authorized_nostr_keys`.
- 🧪 Migrated media conversion to use new Spatie enums for clarity.
- ♻️ Replaced repetitive link rendering with dynamic rendering in meetups and services views.
2026-06-29 22:20:01 +02:00

77 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use Akuechler\Geoly;
use App\Models\Concerns\SetsCreatedBy;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Facades\Cookie;
use Spatie\Sluggable\HasSlug;
use Spatie\Sluggable\SlugOptions;
class City extends Model
{
use Geoly;
use HasFactory;
use HasSlug;
use SetsCreatedBy;
/**
* The attributes that aren't mass assignable.
*
* @var array
*/
protected $guarded = [];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'id' => 'integer',
'country_id' => 'integer',
'osm_relation' => 'json',
'simplified_geojson' => 'json',
];
/**
* Get the options for generating the slug.
*/
public function getSlugOptions(): SlugOptions
{
return SlugOptions::create()
->generateSlugsFrom(['country.code', 'name'])
->saveSlugsTo('slug')
->usingLanguage(Cookie::get('lang', config('app.locale')));
}
public function createdBy(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
public function country(): BelongsTo
{
return $this->belongsTo(Country::class);
}
public function venues(): HasMany
{
return $this->hasMany(Venue::class);
}
public function courseEvents()
{
return $this->hasManyThrough(CourseEvent::class, Venue::class);
}
public function meetups()
{
return $this->hasMany(Meetup::class);
}
}