Laravel 5.7 - Неверное текстовое представление: 7 ОШИБКА: неверный синтаксис ввода для целого числа: \ "10337e35-8da9-4600-b7de-792398eb6f48 \" - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь создать уведомление базы данных в Laravel 5.7 и получаю это исключение SQL QueryException.Моя переменная $ notifiable в методе toArray - это пользователь, и этот идентификатор в исключении: invalid input syntax for integer: \"10337e35-8da9-4600-b7de-792398eb6f48\" - это правильный идентификатор пользователя, которого нужно уведомить.Моя таблица уведомлений настроена стандартным способом:

Schema::create('notifications', function (Blueprint $table) {
        $table->uuid('id')->primary();
        $table->string('type');
        $table->morphs('notifiable');
        $table->text('data');
        $table->timestamp('read_at')->nullable();
        $table->timestamps();
    });

Моя таблица пользователей настроена так:

Schema::create('users', function (Blueprint $table) {
        $table->uuid('id');
        $table->primary('id');
        $table->string('name');
        $table->string('username')->unique();
        $table->string('email');
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
        $table->softDeletes();
    });

Она настроена с использованием uuid в качестве основного идентификатора,Кроме того, само уведомление имеет database в методе via:

public function via($notifiable)
{
    return ['database', 'mail'];
}

Я установил пару свойств в методе toArray.Ничего сложного.Я также попытался вручную вставить в таблицу уведомлений, и я могу вставить запись с notifiable_id в виде целого числа, но не строка / UUID.Меня просто ошеломляет, что nofiable система не будет настроена для учета идентификаторов uuid.Может быть, это всего лишь небольшой твик, но я не вижу его там и думаю, что кто-то еще столкнулся с этим.Ура!

Полное исключение:

Object { message: "SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for integer: \"0e7cc3d8-bfca-41c1-99f8-6da9e8887465\" (SQL: insert into \"notifications\" (\"id\", \"type\", \"data\", \"read_at\", \"notifiable_id\", \"notifiable_type\", \"updated_at\", \"created_at\") values (f6206d4e-c98f-4ced-a1ee-6a755f073807, App\\Notifications\\BugTransition, {\"bug_id\":\"be14d750-ba6c-4e70-82f7-a36786ff37f4\",\"workflow_state\":\"accepted\"}, , 0e7cc3d8-bfca-41c1-99f8-6da9e8887465, App\\User, 2018-10-22 22:35:54, 2018-10-22 22:35:54))", exception: "Illuminate\\Database\\QueryException", file: "/srv/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php", line: 664,

1 Ответ

0 голосов
/ 23 октября 2018

Проблема notifiable_id.$table->morphs('notifiable'); создает целочисленный столбец, но вы пытаетесь сохранить строку.

Вы должны создать столбцы (и индекс) самостоятельно:

$table->string('notifiable_type');
$table->string('notifiable_id');
$table->index(['notifiable_type', 'notifiable_id']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...