Код: Выделить всё
Component Old Version New Version
PHP 7.3.0 8.3.0
Yii 2.0.6 2.0.51
MariaDB 10.1.34 11.6.2
{
"statusCode": 200,
"message": "",
"data": {
"institutionId": "66"
}
После обновления идентификатор учреждения изменился на целое число:
{
"statusCode": 200,
"message": "",
"data": {
"institutionId": 66
}
Вызов API идет чтобы
Код: Выделить всё
public function actionGetInstitutionDetails()
{
$request = Yii::$app->request;
$user = $request->get('userId');
$institutionId = $request->get('institutionId');
$userId = $user ? $user : yii::$app->user->identity->id;
if ($userId && $institutionId) {
$institutionDetails = ExtendedInstitution::getInstitutionData($institutionId);
$resultSet = [];
$result = new \stdClass();
if ($institutionDetails) {
foreach ($institutionDetails as $key => $value) {
$data = new \stdClass();
$data->institutionId = (!empty($value['id'])) ? $value['id'] : '';
$data->institutionName = (!empty($value['name'])) ? $value['name'] : '';
$data->phoneNumber2 = (!empty($value['phone2'])) ? $value['phone2'] : 'Not available';
$data->email = (!empty($value['email'])) ? $value['email'] : '';
$data->website = (!empty($value['url'])) ? $value['url'] : '';
}
$this->statusCode = 200;
$this->message = '';
$this->data = $data;
return new ApiResponse($this->statusCode, $this->data,$this->message);
}
}
}
Код: Выделить всё
public static function getInstitutionData($institutionId)
{
try {
$institutionDetails = Yii::$app->db->createCommand(
"CALL get_institution(:institutionid)")
->bindValue(':institutionid' , $institutionId )
->queryAll();
return $institutionDetails;
} catch (Exception $e) {
return false;
}
}
CREATE DEFINER=`root`@`%` PROCEDURE `get_institution`(institutionid int)
BEGIN
SELECT
i.id,
i.`name`,
i.pin,
i.institutionlogo,
i.email,
i.url,
i.moreurl,
i.institutiontype AS 'institutiontypeid',
FROM
institution i
WHERE
i.id = institutionid;
END
Код: Выделить всё
class ApiResponse implements \JsonSerializable
{
public $statusCode;
public $data;
public $message = "";
public function __construct($status = null, $data = null, $message = "")
{
$this->statusCode = $status;
$this->message = $message;
$this->data = $data;
}
public static function __set_state($data)
{
$obj = new ApiResponse();
$obj->data = $data["data"];
$obj->message = $data["message"];
$obj->statusCode = $data["statusCode"];
return $obj;
}
/**
* This is the abstract method which returns json encoded data
*/
function jsonSerialize()
{
if (is_null($this->data)) {
$this->data = new \stdClass();
}
return [
'statusCode' => $this->statusCode,
'message' => $this->message,
'data' => $this->data
];
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... in-the-new