I am trying to update JSONB data column in the Postgres database using ActiveRecord.
I expect success on update
{
"name": "Database Exception",
"message": "Object of class yii\\db\\JsonExpression could not be converted to string\nFailed to prepare SQL: UPDATE \"crm\".\"deal\" SET \"search_query\"=:qp0, \"updated_at\"=:qp1 WHERE \"id\"=:qp2",
"code": 4096,
"type": "yii\\db\\Exception",
"file": "/home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/Command.php",
"line": 264,
"stack-trace": [
"#0 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/Command.php(1067): yii\\db\\Command->prepare(false)",
"#1 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/ActiveRecord.php(247): yii\\db\\Command->execute()",
"#2 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/BaseActiveRecord.php(801): yii\\db\\ActiveRecord::updateAll(Array, Array)",
"#3 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/ActiveRecord.php(591): yii\\db\\BaseActiveRecord->updateInternal(NULL)",
"#4 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/BaseActiveRecord.php(672): yii\\db\\ActiveRecord->update(true, NULL)",
"#5 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/rest/UpdateAction.php(48): yii\\db\\BaseActiveRecord->save()",
"#6 [internal function]: yii\\rest\\UpdateAction->run('47135')",
"#7 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Action.php(94): call_user_func_array(Array, Array)",
"#8 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Controller.php(157): yii\\base\\Action->runWithParams(Array)",
"#9 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Module.php(528): yii\\base\\Controller->runAction('update', Array)",
"#10 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/web/Application.php(103): yii\\base\\Module->runAction('crm/deal/update', Array)",
"#11 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Application.php(386): yii\\web\\Application->handleRequest(Object(yii\\web\\Request))",
"#12 /home/borodulin/projects/roomberry/api/web/index.php(18): yii\\base\\Application->run()",
"#13 {main}"
],
"error-info": null,
"previous": {
"name": "PHP Recoverable Error",
"message": "Object of class yii\\db\\JsonExpression could not be converted to string",
"code": 4096,
"type": "yii\\base\\ErrorException",
"file": "/home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/Command.php",
"line": 316,
"stack-trace": [
"#0 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/Command.php(260): yii\\db\\Command->bindPendingParams()",
"#1 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/Command.php(1067): yii\\db\\Command->prepare('???')",
"#2 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/ActiveRecord.php(247): yii\\db\\Command->execute()",
"#3 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/BaseActiveRecord.php(801): yii\\db\\ActiveRecord::updateAll('???', '???', '???')",
"#4 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/ActiveRecord.php(591): yii\\db\\BaseActiveRecord->updateInternal('???')",
"#5 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/db/BaseActiveRecord.php(672): yii\\db\\ActiveRecord->update('???', '???')",
"#6 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/rest/UpdateAction.php(48): yii\\db\\BaseActiveRecord->save('???', '???')",
"#7 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Action.php(94): yii\\rest\\UpdateAction->run('???')",
"#8 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Action.php(94): ::call_user_func_array:{/home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Action.php:94}('???', '???')",
"#9 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Controller.php(157): yii\\base\\Action->runWithParams('???')",
"#10 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Module.php(528): yii\\base\\Controller->runAction('???', '???')",
"#11 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/web/Application.php(103): yii\\base\\Module->runAction('???', '???')",
"#12 /home/borodulin/projects/roomberry/vendor/yiisoft/yii2/base/Application.php(386): yii\\web\\Application->handleRequest('???')",
"#13 /home/borodulin/projects/roomberry/api/web/index.php(18): yii\\base\\Application->run()",
"#14 {main}"
]
}
}
| Q | A
| ---------------- | ---
| Yii version | 2.0.14
| PHP version | 7.0
| Operating system | Ubuntu 16.04 LTS
@samdark perhaps JsonExpression::__toString() solves this problem.
Please, post some code to reproduce the problem
Maybe a duplicate of #15684
Most helpful comment
https://travis-ci.org/borodulin/yii2-json-error
https://github.com/borodulin/yii2-json-error