Как отдать все свойства модели в ответ на запрос?

Всё что касается построения API
Ответить
rafic
Сообщения: 57
Зарегистрирован: 2013.04.26, 13:19

Как отдать все свойства модели в ответ на запрос?

Сообщение rafic »

Не знаю как написать словами, смотрите примеры.

Имею модель с вот такими правилами валидации:

Код: Выделить всё

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['landing_id', 'form_id', 'name'], 'required'],
            [['landing_id', 'form_id', 'importance_key', 'is_deleted'], 'integer'],
            [['name'], 'string', 'max' => 45],
            [['email', 'comment'], 'string', 'max' => 255],

            ['phone', 'existContactsValidator', 'skipOnEmpty' => false],
            ['phone', 'string', 'max' => 16, 'min' => 7],
            ['phone', 'match', 'pattern' => "/^([0-9])+$/i"],
            ['email', 'email'],

            ['importance_key', 'default', 'value' => self::IMPORTANCE_NORMAL],
            ['importance_key', 'in', 'range' => [self::IMPORTANCE_NORMAL, self::IMPORTANCE_LOW, self::IMPORTANCE_VIP]],

            [['date_create', 'date_update'], 'safe'],
        ];
    }
Далее контроллер, в котором два действия: create и get.
Оба они возвращают модель.

Код: Выделить всё

class UserController extends \app\components\Rest
{
    /**
     * Создание модели
     * @return mixed
     */
    public function actionCreate()
    {
        $params = Yii::$app->request->getBodyParams();
        $model = new User;

        /*****/

        return $model;
    }
    /**
     * Поиск модели
     * @return mixed
     */
    public function actionGet()
    {
        $params = Yii::$app->request->getBodyParams();
        $model = User::findByEmail($params['email']);
        /*****/

        return $model;
    }
}
И вот в чем беда.
На create я получаю вот такой ответ
{
"form_id": "1",
"name": "Виталий",
"phone": "380997632945",
"email": null,
"landing_id": 1,
"date_create": "2014-10-07 22:09:58",
"date_update": "2014-10-07 22:09:58",
"importance_key": 0,
"id": 31
}
А на get я получаю такой
{
"form_id": "1",
"name": "Виталий",
"phone": "380997632945",
"email": null,
"landing_id": 1
}
Вопрос. Куда делась половина полей?
И как их вернуть?
Последний раз редактировалось rafic 2014.10.08, 21:57, всего редактировалось 1 раз.
Ищу разработчика или команду разработчиков для поддержки проекта.
Детальнее узнай по ссылке https://goo.gl/YU8uTS.

Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Ка отдать все свойства модели в ответ на запрос?

Сообщение MetaDriver »

Переопределение fields()
https://github.com/yiisoft/yii2/blob/ma ... B5-fields-

rafic
Сообщения: 57
Зарегистрирован: 2013.04.26, 13:19

Re: Как отдать все свойства модели в ответ на запрос?

Сообщение rafic »

MetaDriver писал(а):Переопределение fields()
https://github.com/yiisoft/yii2/blob/ma ... B5-fields-
Так дело в том, что у меня все атрибуты есть в БД. Мне не нужно добавлять или удалять атрибуты.
Я не могу понять почему при создании возвращаются все поля, а при поиске модели - часть полей.
По сути и там и там сценарий update. Разницу не могу уловить.
Есть еще мысли?
Ищу разработчика или команду разработчиков для поддержки проекта.
Детальнее узнай по ссылке https://goo.gl/YU8uTS.

Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Как отдать все свойства модели в ответ на запрос?

Сообщение MetaDriver »

В Вашей модели есть метод "fields()" ? Определён ?
Если (1) да, то видимо в нём прописаны именно те поля, которые Вы и получаете. Либо закомментируйте этот метод, либо допишите туда те поля, которые Вы хотите получить. Ибо в писании (см. ссылку выше) сказано: "По умолчанию все атрибуты модели будут включены в ответы API." - что я в точности и получаю в своей практике.
Если (2) нет, - то это какой-то баг на Вашей стороне. И на основании предоставленной Вами информации вычислить его дистанционно нет возможности. Либо добавьте информации, либо найдите сами.

Ответить