РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
85 of 1392 menu

Поле longText

Метод longText используется при создании миграций для определения столбца, способного хранить очень большие объемы текстовой информации. В отличие от text, который хранит до 65 535 байт, поле longText может содержать до 4 294 967 295 байт (около 4 ГБ). Это делает его идеальным выбором для хранения содержимого статей, документации, логов, JSON-данных или любого другого объемного текста.

Синтаксис

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up(): void { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->longText('content'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('articles'); } }; ?>

Метод longText принимает имя столбца в качестве обязательного параметра и возвращает экземпляр ColumnDefinition для дальнейшей настройки с помощью дополнительных методов-модификаторов.

Пример с модификаторами

Рассмотрим создание таблицы с полем longText, допускающим NULL-значения и имеющим комментарий:

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up(): void { Schema::create('documents', function (Blueprint $table) { $table->id(); $table->longText('full_text') ->nullable() ->comment('Full text content of the document'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('documents'); } }; ?>

Использование в модели

После создания миграции и запуска миграций, в модели Eloquent поле longText работает как обычное строковое поле. Однако для хранения очень больших данных рекомендуется использовать постраничную загрузку или потоковую передачу:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Document extends Model { protected $fillable = ['full_text']; // Cast to string by default protected $casts = [ 'full_text' => 'string', ]; } ?>

Пример работы с большим текстом

Демонстрация сохранения и получения большого текста с использованием модели Eloquent:

<?php namespace AppHttpControllers; use AppModelsDocument; class DocumentController extends Controller { public function store() { $longText = str_repeat('This is a very long text. ', 100000); $document = Document::create([ 'full_text' => $longText, ]); return $document; } public function show($id) { $document = Document::findOrFail($id); return response()->json([ 'id' => $document->id, 'text_length' => strlen($document->full_text), 'excerpt' => substr($document->full_text, 0, 200) . '...', ]); } } ?>

Результат выполнения кода для записи с большим текстом:

{ "id": 1, "text_length": 2100000, "excerpt": "This is a very long text. This is a very long text. ..." }

Смотрите также

  • поле text,
    которое хранит текст до 65 535 байт
  • поле mediumText,
    которое хранит текст до 16 777 215 байт
  • поле string,
    которое хранит строки ограниченной длины
  • поле json,
    которое хранит структурированные данные в формате JSON
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить