#laravel #migration
#laravel #миграция
Вопрос:
Я хочу создать внешний ключ в таблице обзора. Вот моя структура таблицы.
public function up()
{
Schema::create('reviews', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('product_id')->unsigned()->index();
$table->foreign('product_id')->references('id')->on('products')->onDelete(
'cascade'
);
$table->string('customer');
$table->text('review');
$table->integer('star');
$table->timestamps();
});
}
Теперь мой вопрос: я не понимаю приведенных ниже утверждений.
$table->integer('product_id')->unsigned()->index();
Я не хочу выполнять этот запрос, не понимая этого конкретного оператора.
Что unsigned()->index()
означает в laravel?
Я несколько раз читал официальную документацию laravel. Они говорят, что unsigned() означает Set INTEGER to UNSIGNED
. Отсутствие моих ограничений. Я не понимаю ни единого слова, которое они говорят об этом конкретном запросе. Пожалуйста, объясните простыми словами, если можете. Другой вопрос: если я не объявляю unsigned()->index()
с integer('product_id')
помощью, то в чем должна быть проблема? Заранее благодарю вас за ваше присутствие.
Комментарии:
1. Тип без знака может использоваться для разрешения только неотрицательных чисел в столбце или когда вам нужен больший верхний числовой диапазон для столбца. Например, если столбец INT БЕЗ ЗНАКА , размер диапазона столбца остается тем же, но его конечные точки сдвигаются с -2147483648 и 2147483647 до 0 и 4294967295 .
2. Индекс базы данных — это структура данных, которая повышает скорость операций в таблице. Индексы могут быть созданы с использованием одного или нескольких столбцов. Здесь вам не нужно определять столбец как a
index()
, потомуproduct_id
что это внешний ключ, а внешний ключ по умолчанию равен indedex3. Спасибо, сэр. Я понимаю из ваших разъяснений. Еще раз спасибо.