Intereting Posts
Есть ли способ, которым я применяю эту ошибку PHP, если я использую переменную uninitialized / undefined? Есть ли способ переопределить подсказку типа к классу потомков при расширении абстрактного класса? Ввод дублируется В чем разница между расширением и zend_extension в php.ini? php: force загрузить в hd? преобразование MySQL-запроса в синтаксис Codeigniter php POST-переменная с заголовками вызов функции php из кнопки отправки Как я могу предоставить страницу с ошибкой в ​​структуре Slim, когда исключение выбрасывается за пределы маршрута? PHP-массив, чувствительны ли массивы к регистру? Codeigniter ActiveRecord: присоединиться к обратному обращению Как подключить несколько баз данных в инфраструктуре phalcon в то же время использовать как в классе модели не только один PHP. Неверные данные передаются и отображаются на другой странице. Отправить значения в $ _GET с помощью jQuery Использование PHP для поиска Юникода персонажа

Модель Yii2 сохраняет нулевые значения

Я использую запрос REST POST для создания новой строки в моем db, но это сохраняет значения null, а не значения, которые я отправил. Поэтому я попытался отправить запрос PUT для изменения существующих данных, но он не изменил строку (например, когда я использую GET). На самом деле, запрос GET работает нормально

CountryController.php:

<?php namespace app\controllers; use yii\rest\ActiveController; class CountryController extends ActiveController { public $modelClass = 'app\models\Country'; } 

Модель Country.php:

Я попытался сделать это с помощью другой таблицы без установки primaryKey здесь, но получил тот же результат.

 <?php namespace app\models; use yii\db\ActiveRecord; class Country extends ActiveRecord { public static function primaryKey() { return ['code']; } } 

Вот мой стол:

 mysql> describe country; +------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+-------+ | code | char(2) | NO | PRI | NULL | | | name | char(52) | NO | | NULL | | | population | int(11) | NO | | 0 | | +------------+----------+------+-----+---------+-------+ mysql> select * from country; +------+----------------+------------+ | code | name | population | +------+----------------+------------+ | AU | Australia | 18886000 | | BR | Brazil | 170115000 | | CA | Canada | 1147000 | | CN | China | 1277558000 | | DE | Germany | 82164700 | | FR | France | 59225700 | | GB | United Kingdom | 59623400 | | IN | India | 1013662000 | | RU | Russia | 146934000 | | US | United States | 278357000 | +------+----------------+------------+ 

Попробуйте данные POST:

Заголовки

И получите результат:

предварительный просмотр

 mysql> select * from country; +------+----------------+------------+ | code | name | population | +------+----------------+------------+ | | | 0 | | AU | Australia | 18886000 | | BR | Brazil | 170115000 | | CA | Canada | 1147000 | | CN | China | 1277558000 | | DE | Germany | 82164700 | | FR | France | 59225700 | | GB | United Kingdom | 59623400 | | IN | India | 1013662000 | | RU | Russia | 146934000 | | US | United States | 278357000 | +------+----------------+------------+ 

Также я попытался распечатать запрос с использованием print_r / die и получил очевидный правильный результат /vendor/yiisoft/yii2/rest/CreateAction.php

 public function run() { if ($this->checkAccess) { call_user_func($this->checkAccess, $this->id); } /* @var $model \yii\db\ActiveRecord */ $model = new $this->modelClass([ 'scenario' => $this->scenario, ]); $model->load(Yii::$app->getRequest()->getBodyParams(), ''); if ($model->save(false)) { // PRINT THE REQUEST DATA print_r(Yii::$app->getRequest()->getBodyParams()); die(); $response = Yii::$app->getResponse(); $response->setStatusCode(201); $id = implode(',', array_values($model->getPrimaryKey(true))); $response->getHeaders()->set('Location', Url::toRoute([$this->viewAction, 'id' => $id], true)); } elseif (!$model->hasErrors()) { throw new ServerErrorHttpException('Failed to create the object for unknown reason.'); } return $model; } 

Предварительный ответ:

Предварительный просмотр результатов печати

Но эти данные не сохранялись в базе данных правильно, как я описал выше