'boolean', 'inuavs' => 'array' ]; protected $enumCasts = [ 'presentation_type' => PresentationType::class, 'ocbStatus' => EleveurOcbStatus::class, 'ocbType' => OCBType::class, 'geo_type' => GeoType::class ]; protected $table = 'ocb_breeders'; protected $fillable = [ 'breeder_code', 'first_name', 'last_name', 'postal_code', 'place', 'testimony', 'latitude', 'longitude', 'geo_type', 'ocbStatus', 'ocbType', 'presentation_type', 'audit', 'valid_marketing_date', 'video_link', 'status', 'display_random', 'inuavs', ]; protected static function booted() { static::creating(function ($breeder) { $breeder->slug = Str::slug(sprintf( '%s %s %s', $breeder->id, $breeder->last_name, $breeder->id )); }); static::updating(function ($breeder) { $breeder->slug = Str::slug(sprintf( '%s %s %s', $breeder->id, $breeder->last_name, $breeder->id )); }); static::retrieved(function ($breeder) { $breeder->picture = $breeder->resolveImageUrl($breeder->picture); for ($i = 1; $i <= 3; $i++) { $breeder->{'picture' . $i} = $breeder->resolveImageUrl($breeder->{'picture' . $i}); } }); } public function getRouteKeyName() { return "slug"; } /** * Get ocb validated breeders query * * @return \Illuminate\Database\Eloquent\Builder */ public static function ocbValidated() { return static::where('status', true)->whereHas('site', function ($q) { $q->where('type', EleveurOcbStatus::yes()->value); }); } private function resolveImageUrl($imageUrl) { // For migrated urls from 2016 if (strpos($imageUrl, '/uploads') === 0) { return $imageUrl; } return Storage::url($imageUrl); } public function resolveOriginalUrl($imageUrl) { // For migrated urls from 2016 if (strpos($imageUrl, '/storage') === 0) { return str_replace('/storage', '', $imageUrl); } return $imageUrl; } }