Files

56 lines
1.4 KiB
PHP
Raw Permalink Normal View History

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Site extends Model
{
protected $fillable = [
'collection',
'domain',
'root_domain',
'url',
'title',
'description',
'keywords',
'server',
'powered_by',
'generator',
];
public function pages(): HasMany
{
return $this->hasMany(SitePage::class);
}
/** Links this site's pages make out to other domains. */
public function outboundLinks(): HasMany
{
return $this->hasMany(Backlink::class);
}
/** Backlinks pointing at this site, i.e. rows recorded against its domain as the target. */
public function inboundLinks(): HasMany
{
return $this->hasMany(Backlink::class, 'target_domain', 'domain');
}
/** Other indexed sites whose root domain is this site's domain, e.g. blog.example.com under example.com. */
public function subdomains(): HasMany
{
return $this->hasMany(Site::class, 'root_domain', 'domain')->where('id', '!=', $this->id);
}
/** The root-domain Site this one is a subdomain of, if it's indexed and if this site even is a subdomain. */
public function rootSite(): ?Site
{
if ($this->domain === $this->root_domain) {
return null;
}
return static::where('domain', $this->root_domain)->first();
}
}