Laravel 2 экземпляра BadMethodCallException: «int не существует» и «метод не существует»

В настоящее время я выполняю миграцию в Laravel через терминал и получаю эти две ошибки при попытке использовать php artisan migrate; Я распечатаю ошибки ниже:

 BadMethodCallException  : Method Illuminate\Database\Schema\Blueprint::int does not exist.

  at /Users/shaquilenoor/Desktop/chatapi/vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php:100
     96|      */
     97|     public function __call($method, $parameters)
     98|     {
     99|         if (! static::hasMacro($method)) {
  > 100|             throw new BadMethodCallException(sprintf(
    101|                 'Method %s::%s does not exist.', static::class, $method
    102|             ));
    103|         }
    104| 

  Exception trace:

  1   Illuminate\Database\Schema\Blueprint::__call("int")
      /Users/shaquilenoor/Desktop/chatapi/database/migrations/2019_01_29_045824_create_contacts_table.php:15

  2   CreateContactsTable::{closure}(Object(Illuminate\Database\Schema\Blueprint))
      /Users/shaquilenoor/Desktop/chatapi/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:164

Похоже, что обе ошибки связаны с моей таблицей CreateContactsTable, поэтому я распечатаю код из этого файла ниже:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateContactsTable extends Migration
{
    public function up()
    {
        Schema::create('contacts', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('user1_id');
            $table->unsignedInteger('user2_id');
            $table->int('room_id')->unique();
            $table->timestamps();
            $table->foreign('room_id')->references('id')->on('rooms');
            $table->foreign('user1_id')->references('id')->on('users');
            $table->foreign('user2_id')->references('id')->on('users');
        });
    }

    public function down()
    {
        Schema::dropIfExists('contacts');
    }
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
2 212
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ошибка в строке:

$table->int('room_id')->unique();

Метода int не существует. Вместо этого вы должны использовать integer:

$table->integer('room_id')->unique();

Спасибо! Эта ошибка исчезла, но теперь у меня есть новая проблема, я напечатаю ниже: PDOException::("SQLSTATE[HY000]: Общая ошибка: 3780 Ссылочный столбец "room_id" и ссылочный столбец "id" в ограничении внешнего ключа "contacts_room_id_foreign" несовместимо.") /Users/shaquilenoor/Desktop/chatapi/vendor/laravel/framework‌​/src/Illuminate/Data‌base/Connection.php:‌​458 2 PDOStatement::execute() /Users/shaquilenoor/Desktop/chatapi /vendor/laravel/framework‌​/src/Illuminate/Data‌​base/Connection.php:‌​458

Chakeeel 29.01.2019 23:35

Измените $table->int на $table->integer, потому что метод int не существует

Спасибо! Эта ошибка исчезла, но теперь у меня есть новая проблема, я напечатаю ниже: PDOException::("SQLSTATE[HY000]: Общая ошибка: 3780 Ссылочный столбец "room_id" и ссылочный столбец "id" в ограничении внешнего ключа "contacts_room_id_foreign" несовместимо.") /Users/shaquilenoor/Desktop/chatapi/vendor/laravel/framework‌​/src/Illuminate/Data‌base/Connection.php:‌​458 2 PDOStatement::execute() /Users/shaquilenoor/Desktop/chatapi /vendor/laravel/framework‌​/src/Illuminate/Data‌​base/Connection.php:‌​458

Chakeeel 29.01.2019 23:44

Привет, @Chakeeel, ты определил столбец id в таблице rooms как первичный или уникальный ключ?

Chad timothy 30.01.2019 08:45

Другие вопросы по теме