-
-
Notifications
You must be signed in to change notification settings - Fork 664
Open
Labels
Description
Мой случай обнаружения ошибки
Я создал поле с типом 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:
Т. к. моё поле - Relation, оно ожидает либо число либо null, а получает пустую строку и пытается передать её как параметр запроса для получения значения из таблицы, на которую смотрит Relation
.
Логи
Вот такое обнаружил в логах:
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()
...
"}