И столбцы, на которые ссылаются, и столбцы, на которые ссылаются , должны иметь одинаковый тип данных, как объяснено в документации :
Соответствующие столбцы во внешнем ключе и ссылочный ключ должен иметь похожие типы данных. Размер и знак целочисленных типов должны быть одинаковыми . Длина типов строк не обязательно должна быть одинаковой. Для недвоичных (символьных) строковых столбцов набор символов и сопоставление должны быть одинаковыми.
Вы должны сделать оба столбца без знака или оба со знаком. Без знака кажется более подходящим для увеличенного ключа:
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->unsignedBigInteger('id'); # changed to unsigned
$table->string('title',10);
$table->timestamps();
});
}
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('category_id')->index('category_id');
$table->string('title', 20);
$table->text('description');
$table->timestamps();
$table->foreign('category_id')->references('id')->on('categories');
});
}