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

Метод primary

Метод primary класса Blueprint применяется в миграциях для назначения первичного ключа для таблицы. Первым параметром передаётся имя столбца или массив имён столбцов для составного ключа, вторым параметром можно указать имя индекса. Если не указан второй параметр, имя индекса будет сгенерировано автоматически.

Этот метод следует использовать только в том случае, если вы не хотите использовать автоматически создаваемый столбец id. Чаще всего для первичного ключа используют метод id, который создаёт автоинкрементный столбец и автоматически назначает его первичным ключом.

Синтаксис

<?php Schema::table('table_name', function (Blueprint $table) { $table->primary($columns, $indexName); }); ?>

Пример

Создадим таблицу 'users' с пользовательским первичным ключом 'user_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->unsignedBigInteger('user_id'); $table->primary('user_id'); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('users'); } }; ?>

Пример

Создадим составной первичный ключ из столбцов 'user_id' и 'role_id' для таблицы 'user_roles':

<?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('user_roles', function (Blueprint $table) { $table->unsignedBigInteger('user_id'); $table->unsignedBigInteger('role_id'); $table->primary(['user_id', 'role_id']); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('user_roles'); } }; ?>

Пример

Добавим первичный ключ на существующую таблицу 'products' для столбца 'product_code':

<?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('products', function (Blueprint $table) { $table->primary('product_code'); }); } public function down(): void { Schema::table('products', function (Blueprint $table) { $table->dropPrimary('products_product_code_primary'); }); } }; ?>

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

  • метод index,
    который создаёт обычный индекс для ускорения поиска
  • метод unique,
    который создаёт уникальный индекс с проверкой на дубликаты
  • метод foreign,
    который определяет внешний ключ для связей между таблицами
  • метод dropColumn,
    который удаляет столбец из таблицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить