vito/app/Models/LoadBalancerServer.php
2025-03-12 13:31:10 +01:00

52 lines
1.1 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* @property int $load_balancer_id
* @property string $ip
* @property int $port
* @property int $weight
* @property bool $backup
* @property Site $loadBalancer
*/
class LoadBalancerServer extends AbstractModel
{
/** @use HasFactory<\Database\Factories\LoadBalancerServerFactory> */
use HasFactory;
protected $fillable = [
'load_balancer_id',
'ip',
'port',
'weight',
'backup',
];
protected $casts = [
'load_balancer_id' => 'integer',
'port' => 'integer',
'weight' => 'integer',
'backup' => 'boolean',
];
/**
* @return BelongsTo<Site, covariant $this>
*/
public function loadBalancer(): BelongsTo
{
return $this->belongsTo(Site::class, 'load_balancer_id');
}
public function server(): ?Server
{
/** @var ?Server $server */
$server = $this->loadBalancer->project->servers()->where('local_ip', $this->ip)->first();
return $server;
}
}