Skip to content

Conversation

ShamanKing19
Copy link

@ShamanKing19 ShamanKing19 commented Sep 17, 2025

Мой случай обнаружения ошибки

Я создал поле с типом Matrix, а в нём сделал колонку с полем Relation

Matrix::make('prices')
    ->columns([
        'Магазин' => 'shop_id',
        'Количество' => 'quantity',
        'Цена' => 'price',
        'Валюта' => 'currency',
        'Описание' => 'description',
        'Дата изменения' => 'updated_at'
    ])
    ->fields([
        'shop_id' => Relation::make()->fromModel(Shop::class, 'name', 'id'),
        'quantity' => Input::make()->type('number')->min(1),
        'price' => Input::make()->type('number')->min(0),
        'currency' => Input::make()->type('text'),
        'description' => Input::make()->type('text'),
        'updated_at' => DateTimer::make()->disabled()
    ])
    ->value($this->offer?->prices)

При открытии страницы вижу ошибку

SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type bigint: "" CONTEXT: unnamed portal parameter $1 = '' (Connection: pgsql, SQL: select * from "shops" where "id" in ())". 

Причина

Суть в том, что Matrix пытается сразу получить значение по-умолчанию для новой строки, которую мы создадим через кнопку "Добавить строку", но в качестве значения передаётся пустая строка "".

Решение

Источник проблемы находится в шаблоне resources/views/partials/fields/matrixRow.blade.php в строке 7:
Image

Т. к. моё поле - Relation, оно ожидает либо число либо null, а получает пустую строку и пытается передать её как параметр запроса для получения значения из таблицы, на которую смотрит Relation.

Вообще кажется более логичным присваивать null в качестве значения по умолчанию вместо пустой строки. Это выглядит более универсально.

Логи

Вот такое обнаружил в логах:

SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for type bigint: ""
CONTEXT:  unnamed portal parameter $1 = '' (Connection: pgsql, SQL: select * from "shops" where "id" in ()) (View: /var/www/html/backend/platform/resources/views/partials/fields/matrixRow.blade.php) (View: /var/www/html/backend/platform/resources/views/partials/fields/matrixRow.blade.php) {"userId":1,"exception":"[object] (Illuminate\\View\\ViewException(code: 0): SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for type bigint: \"\"
CONTEXT:  unnamed portal parameter $1 = '' (Connection: pgsql, SQL: select * from \"shops\" where \"id\" in ()) (View: /var/www/html/backend/platform/resources/views/partials/fields/matrixRow.blade.php) (View: /var/www/html/backend/platform/resources/views/partials/fields/matrixRow.blade.php) at /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php:824)
[stacktrace]
#0 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(59): Illuminate\\View\\Engines\\CompilerEngine->handleViewException(Object(Illuminate\\View\\ViewException), 0)
#1 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(76): Illuminate\\View\\Engines\\PhpEngine->evaluatePath('/var/www/html/b...', Array)
#2 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/View/View.php(208): Illuminate\\View\\Engines\\CompilerEngine->get('/var/www/html/b...', Array)
...

[previous exception] [object] (Illuminate\\View\\ViewException(code: 0): SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for type bigint: \"\"
CONTEXT:  unnamed portal parameter $1 = '' (Connection: pgsql, SQL: select * from \"shops\" where \"id\" in ()) (View: /var/www/html/backend/platform/resources/views/partials/fields/matrixRow.blade.php) at /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php:824)
[stacktrace]
#0 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(59): Illuminate\\View\\Engines\\CompilerEngine->handleViewException(Object(Illuminate\\Database\\QueryException), 1)
#1 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(76): Illuminate\\View\\Engines\\PhpEngine->evaluatePath('/var/www/html/b...', Array)
#2 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/View/View.php(208): Illuminate\\View\\Engines\\CompilerEngine->get('/var/www/html/b...', Array)
#3 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/View/View.php(191): Illuminate\\View\\View->getContents()
#4 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/View/View.php(160): Illuminate\\View\\View->renderContents()
...


[previous exception] [object] (Illuminate\\Database\\QueryException(code: 22P02): SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for type bigint: \"\"
CONTEXT:  unnamed portal parameter $1 = '' (Connection: pgsql, SQL: select * from \"shops\" where \"id\" in ()) at /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php:824)
[stacktrace]
#0 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php(778): Illuminate\\Database\\Connection->runQueryCallback('select * from \"...', Array, Object(Closure))
#1 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php(397): Illuminate\\Database\\Connection->run('select * from \"...', Array, Object(Closure))
#2 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3188): Illuminate\\Database\\Connection->select('select * from \"...', Array, true)
#3 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3173): Illuminate\\Database\\Query\\Builder->runSelect()
#4 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3763): Illuminate\\Database\\Query\\Builder->{closure:Illuminate\\Database\\Query\\Builder::get():3172}()
#5 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3172): Illuminate\\Database\\Query\\Builder->onceWithColumns(Array, Object(Closure))
#6 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(887): Illuminate\\Database\\Query\\Builder->get(Array)
#7 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(869): Illuminate\\Database\\Eloquent\\Builder->getModels(Array)
#8 /var/www/html/backend/platform/src/Screen/Fields/Relation.php(116): Illuminate\\Database\\Eloquent\\Builder->get()
#9 [internal function]: Orchid\\Screen\\Fields\\Relation->{closure:Orchid\\Screen\\Fields\\Relation::fromModel():101}()
#10 /var/www/html/backend/platform/src/Screen/Field.php(518): Closure->call(Object(Orchid\\Screen\\Fields\\Relation))
#11 /var/www/html/backend/platform/src/Screen/Field.php(215): Orchid\\Screen\\Field->runBeforeRender()
#12 /var/www/html/backend/platform/src/Screen/Field.php(544): Orchid\\Screen\\Field->render()
...

[previous exception] [object] (PDOException(code: 22P02): SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for type bigint: \"\"
CONTEXT:  unnamed portal parameter $1 = '' at /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php:411)
[stacktrace]
#0 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php(411): PDOStatement->execute()
#1 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php(811): Illuminate\\Database\\Connection->{closure:Illuminate\\Database\\Connection::select():397}('select * from \"...', Array)
#2 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php(778): Illuminate\\Database\\Connection->runQueryCallback('select * from \"...', Array, Object(Closure))
#3 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Connection.php(397): Illuminate\\Database\\Connection->run('select * from \"...', Array, Object(Closure))
#4 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3188): Illuminate\\Database\\Connection->select('select * from \"...', Array, true)
#5 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3173): Illuminate\\Database\\Query\\Builder->runSelect()
#6 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3763): Illuminate\\Database\\Query\\Builder->{closure:Illuminate\\Database\\Query\\Builder::get():3172}()
#7 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3172): Illuminate\\Database\\Query\\Builder->onceWithColumns(Array, Object(Closure))
#8 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(887): Illuminate\\Database\\Query\\Builder->get(Array)
#9 /var/www/html/backend/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(869): Illuminate\\Database\\Eloquent\\Builder->getModels(Array)
#10 /var/www/html/backend/platform/src/Screen/Fields/Relation.php(116): Illuminate\\Database\\Eloquent\\Builder->get()
#11 [internal function]: Orchid\\Screen\\Fields\\Relation->{closure:Orchid\\Screen\\Fields\\Relation::fromModel():101}()
#12 /var/www/html/backend/platform/src/Screen/Field.php(518): Closure->call(Object(Orchid\\Screen\\Fields\\Relation))
#13 /var/www/html/backend/platform/src/Screen/Field.php(215): Orchid\\Screen\\Field->runBeforeRender()
#14 /var/www/html/backend/platform/src/Screen/Field.php(544): Orchid\\Screen\\Field->render()
#15 /var/www/html/backend/storage/framework/views/0d32b72cd94ea15178339ff59a6ccd59.php(9): Orchid\\Screen\\Field->__toString()
...
"} 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants