Поле ipAddress
Метод ipAddress применяется к схеме таблицы
в миграциях Laravel и создает колонку для хранения
IP-адресов. Данный метод создает поле типа VARCHAR
с длиной 45 символов, что достаточно для хранения
как IPv4, так и IPv6 адресов. Метод не принимает
никаких параметров и автоматически устанавливает
правильную длину строки.
Синтаксис
<?php
Schema::create('table_name', function (Blueprint $table) {
$table->ipAddress('column_name');
});
?>
Пример
Давайте создадим таблицу для хранения информации о пользовательских сессиях с полем для IP-адреса:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create('sessions', function (Blueprint $table) {
$table->id();
$table->ipAddress('ip_address');
$table->string('user_agent');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('sessions');
}
};
?>
Результат выполнения миграции:
"Table 'sessions' created successfully with 'ip_address' column"
Пример
Теперь создадим модель для работы с данными сессий и сохраним запись с IP-адресом:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Session extends Model
{
protected $fillable = [
'ip_address',
'user_agent',
];
}
?>
<?php
use App\Models\Session;
use Illuminate\Http\Request;
Route::post('/session', function (Request $request) {
$session = new Session();
$session->ip_address = $request->ip();
$session->user_agent = $request->userAgent();
$session->save();
return response()->json(['message' => 'Session saved']);
});
?>
Результат выполнения кода:
{
"message": "Session saved"
}
Пример
Давайте получим все сессии с определенного IP-адреса:
<?php
use App\Models\Session;
Route::get('/sessions/ip', function () {
$ipAddress = '192.168.1.1';
$sessions = Session::where('ip_address', $ipAddress)->get();
$res = [];
foreach ($sessions as $session) {
$res[] = $session->user_agent;
}
return response()->json($res);
});
?>
Результат выполнения кода:
[
"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
"Mozilla/5.0 (X11; Linux x86_64)"
]
Смотрите также
-
поле
string,
которое создает строковое поле в таблице -
поле
text,
которое создает поле для длинного текста -
поле
macAddress,
которое создает поле для MAC-адресов -
поле
timestamps,
которое создает поля created_at и updated_at