Laravel: без знака с индексом

#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 что это внешний ключ, а внешний ключ по умолчанию равен indedex

3. Спасибо, сэр. Я понимаю из ваших разъяснений. Еще раз спасибо.