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

Поле char

Метод char используется в миграциях Laravel для создания колонки типа CHAR в базе данных. Первым параметром передаётся имя колонки, вторым - длина строки в символах. Если длина не указана, по умолчанию используется значение 255. В отличие от string, поле char всегда занимает фиксированное количество места в базе данных, что может быть полезно для хранения коротких строк с известной длиной, например, кодов, сокращений или флагов.

Синтаксис

<?php Schema::create('table_name', function (Blueprint $table) { $table->char('column_name', $length); }); ?>

Пример

Давайте создадим миграцию для таблицы продуктов с полем для кода продукта фиксированной длины:

<?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('products', function (Blueprint $table) { $table->id(); $table->char('code', 10); $table->string('name'); $table->integer('price'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('products'); } }; ?>

В результате выполнения миграции будет создана таблица с полем code типа CHAR(10):

CREATE TABLE products ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, code char(10) NOT NULL, name varchar(255) NOT NULL, price int(11) NOT NULL, created_at timestamp NULL DEFAULT NULL, updated_at timestamp NULL DEFAULT NULL, PRIMARY KEY (id) );

Пример

Создадим миграцию для таблицы пользователей с полем для двухбуквенного кода страны:

<?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('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->char('country_code', 2); $table->char('language_code', 2)->nullable(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('users'); } }; ?>

Результат выполнения миграции:

CREATE TABLE users ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, email varchar(255) NOT NULL UNIQUE, country_code char(2) NOT NULL, language_code char(2) DEFAULT NULL, created_at timestamp NULL DEFAULT NULL, updated_at timestamp NULL DEFAULT NULL, PRIMARY KEY (id) );

Пример

Используем метод char вместе с другими модификаторами для создания поля с дополнительными ограничениями:

<?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('orders', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained(); $table->char('status', 1)->default('A'); $table->char('priority', 1)->nullable(); $table->string('description'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('orders'); } }; ?>

В результате будет создана таблица с полями статуса и приоритета фиксированной длины:

CREATE TABLE orders ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, user_id bigint(20) unsigned NOT NULL, status char(1) NOT NULL DEFAULT 'A', priority char(1) DEFAULT NULL, description varchar(255) NOT NULL, created_at timestamp NULL DEFAULT NULL, updated_at timestamp NULL DEFAULT NULL, PRIMARY KEY (id), KEY orders_user_id_foreign (user_id), CONSTRAINT orders_user_id_foreign FOREIGN KEY (user_id) REFERENCES users (id) );

Пример

Теперь создадим модель и наполним базу данных тестовыми записями:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Product extends Model { protected $fillable = ['code', 'name', 'price']; } ?>
<?php namespace Database\Seeders; use App\Models\Product; use Illuminate\Database\Seeder; class ProductSeeder extends Seeder { public function run(): void { Product::create([ 'code' => 'PRD001', 'name' => 'Laptop', 'price' => 999 ]); Product::create([ 'code' => 'PRD002', 'name' => 'Smartphone', 'price' => 599 ]); Product::create([ 'code' => 'PRD003', 'name' => 'Tablet', 'price' => 399 ]); } } ?>

Выполним запрос к таблице продуктов:

<?php use App\Models\Product; use Illuminate\Support\Facades\Route; Route::get('/products', function () { $res = Product::all(); foreach ($res as $product) { echo $product->code . ' - ' . $product->name . ' (' . $product->price . ')' . "\n"; } }); ?>

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

"PRD001 - Laptop (999)" "PRD002 - Smartphone (599)" "PRD003 - Tablet (399)"

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

  • поле string,
    которое создаёт колонку для хранения строк переменной длины
  • поле text,
    которое создаёт колонку для хранения длинных текстов
  • поле enum,
    которое создаёт колонку для хранения значений из заданного списка
  • метод index,
    который создаёт индекс для колонки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить