Files
nexusphp/app/Models/IpLog.php
2025-10-14 14:54:44 +07:00

41 lines
999 B
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
class IpLog extends NexusModel
{
protected $table = 'iplog';
protected $fillable = ['ip', 'userid', 'access', 'uri', 'count'];
protected function ipLocation(): Attribute
{
return new Attribute(
get: fn (mixed $value, array $attributes) => $this->getIpLocation($attributes['ip'])
);
}
private function getIpLocation(string $ip)
{
$result = get_ip_location_from_geoip($ip);
$out = $result['name'];
$suffix = [];
if (!empty($result['city_en'])) {
$suffix[] = $result['city_en'];
}
if (!empty($result['country_en'])) {
$suffix[] = $result['country_en'];
}
if (!empty($result['continent_en'])) {
$suffix[] = $result['continent_en'];
}
if (!empty($suffix)) {
$out .= " " . implode(', ', $suffix);
}
return $out;
}
}