hasMany(Domain::class,'tld_id'); } /* STATIC */ /** * Given a domain name, return the TLD component * * @param string $domainname * @return TLD|null */ public static function domaintld(string $domainname): ?TLD { $tld = NULL; foreach (self::get() as $o) { // Find the most specific match if (preg_match('/'.$o->name.'$/i',$domainname) && (! $tld || (strlen($o->name) > strlen($tld->name)))) $tld = $o; } return $tld; } /* ATTRIBUTES */ public function getNameAttribute($value): string { return strtoupper($value); } /* METHOD */ /** * Given a domain name, return the domain part * * @param string $domainname * @return string|null */ public function domain_part(string $domainname): ?string { $domainname = strtoupper($domainname); // Quick check that this domain is part of this model if (! Str::endsWith($domainname,'.'.$this->name)) return NULL; return Str::replaceLast('.'.$this->name,'',$domainname); } }