Поле mediumText
Метод mediumText применяется в миграциях Laravel для создания колонки типа MEDIUMTEXT в базе данных. Этот тип подходит для хранения больших объемов текстовой информации, таких как полные статьи, документация, логи или JSON-данные. В отличие от text (64 КБ) и longText (4 ГБ), mediumText занимает промежуточное положение с лимитом 16 МБ.
Метод принимает один обязательный параметр - имя колонки. Дополнительно можно использовать модификаторы nullable, default и comment для настройки колонки.
Синтаксис
<?php
Schema::table($table, function (Blueprint $table) {
$table->mediumText($column);
});
?>
Пример
Создадим миграцию для таблицы статей с полем для полного текста:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->mediumText('content');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('articles');
}
};
?>
В результате будет создана таблица с колонкой content, способной хранить до 16 МБ текста.
Пример
Создадим колонку с возможностью пустого значения:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->mediumText('description')->nullable();
});
}
public function down(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->dropColumn('description');
});
}
};
?>
Пример
Добавим поле с комментарием и значением по умолчанию:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->mediumText('metadata')->default('{}')->comment('JSON metadata for article');
});
}
public function down(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->dropColumn('metadata');
});
}
};
?>
Пример
Пример использования модели для сохранения и чтения больших текстов:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function store(): void
{
$article = new Article();
$article->title = 'Long article';
$article->content = 'Very long text content up to 16 MB...';
$article->save();
$res = Article::where('title', 'Long article')->value('content');
echo $res;
}
}
?>
Результат выполнения кода:
"Very long text content up to 16 MB..."