Итак проблема достаточно тривиальная но как еще решить в рамках SqlDataProvider я не могу понять.
По существу есть база Oracle и настроено подключение к ней через oci
Код: Выделить всё
return [
'dsn' => 'oci:dbname=//192.168.XXX.XXX:1521/XXXXX;charset=AMERICAN_AMERICA.CL8MSWIN1251', // Для Работы
'username' => 'XXXXX',
'password' => 'XXXXX',
];
Код: Выделить всё
public function afterFind()
{
$this->DESCRIPTION_CIRCUIT = iconv('windows-1251', 'UTF-8',$this->DESCRIPTION_CIRCUIT);
$this->DESCRIPTION_TRN = iconv('windows-1251', 'UTF-8',$this->DESCRIPTION_TRN);
$this->DESCRIPTION_BELONGING = iconv('windows-1251', 'UTF-8',$this->DESCRIPTION_BELONGING);
$this->DESCRIPTION_WHENCE_TRN = iconv('windows-1251', 'UTF-8',$this->DESCRIPTION_WHENCE_TRN);
}
Но есть заморочка. Я сейчас ковыряюсь с Rest API и выдавать данные нужно на основании не кислого запроса объеденяющего 3 таблицы со всякими подменами и преоброзованием данных. Такой запрос строить на ActiveRecord было-бы гибельным делом, и я не долго думаю сделал его на базе SqlDataProvider.
Код: Выделить всё
public function prepareDataProvider()
{
$exp_RID = new Expression('SELECT CONCAT(CONCAT(TO_CHAR(c.DATA, \'DD.MM.YYYY\'), \' \'), TO_CHAR(TO_DATE(c.VREMYA, \'SSSSS\'), \'HH24:MI:SS\')) AS mDATA,
c.ID_KLIENTA,
c.GR_NOMER,
--------
WHERE c.OPERATZIYA IN (0, 1)
AND c.NOMER_TERMINALA > 0
AND c.GR_NOMER <> 0
$dataProvider = new SqlDataProvider([
'sql' => $exp_RID,
]);
return $dataProvider;
}
Код: Выделить всё
{
"name": "Exception",
"message": "Malformed UTF-8 characters, possibly incorrectly encoded.",
"code": 5,
"type": "yii\\base\\InvalidParamException",
"file": "/var/www/html/pertolrestapi/vendor/yiisoft/yii2/helpers/BaseJson.php",
"line": 132,
"stack-trace": [
"#0 /var/www/html/pertolrestapi/vendor/yiisoft/yii2/helpers/BaseJson.php(66): yii\\helpers\\BaseJson::handleJsonError(5)",
"#1 /var/www/html/pertolrestapi/vendor/yiisoft/yii2/web/JsonResponseFormatter.php(89): yii\\helpers\\BaseJson::encode(Array, 448)",
"#2 /var/www/html/pertolrestapi/vendor/yiisoft/yii2/web/JsonResponseFormatter.php(73): yii\\web\\JsonResponseFormatter->formatJson(Object(yii\\web\\Response))",
"#3 /var/www/html/pertolrestapi/vendor/yiisoft/yii2/web/Response.php(1009): yii\\web\\JsonResponseFormatter->format(Object(yii\\web\\Response))",
"#4 /var/www/html/pertolrestapi/vendor/yiisoft/yii2/web/Response.php(315): yii\\web\\Response->prepare()",
"#5 /var/www/html/pertolrestapi/vendor/yiisoft/yii2/base/Application.php(385): yii\\web\\Response->send()",
"#6 /var/www/html/pertolrestapi/web/index.php(12): yii\\base\\Application->run()",
"#7 {main}"
]
}