Функция Yii 2 Fields в моделях активной записи - PullRequest
0 голосов
/ 31 января 2019

Я работаю над REST API в Yii2, однако у меня есть проблема с тем, что модель должна возвращать при различных действиях.

Например, при перечислении действий мне нужно, например, вернуть 4 атрибута и дляподробное действие Мне нужно вернуть 10 атрибутов из той же модели.

Какой лучший или стандартный способ в Yii2 реализовать это.

Пример:

/ статьи

возврат [идентификатор, название, изображение, дата]

/ статьи / 7

возврат [id, название, изображение, дата, автор, лайки, last_review]

Спасибо

Ответы [ 2 ]

0 голосов
/ 31 января 2019

для / статьи / 7:

public function actionView($id)
{
   return User::findOne($id);
} 

или

public function actionView($id)
{
   return User::find()->select([id, title, image, date, author, likes,last_review])->one();
}

для / статей:

public function actionIndex()
{
   return User::find()->select([id, title, image, date])->all();
}
0 голосов
/ 31 января 2019

Просто напишите методы в вашей модели.

class MyModel extends ActiveRecord
{
    private static $fieldset_1 = [
       'id', 'title', 'image', 'date'
    ];

    private static $fieldset_2 = [
       'id', 'title', 'image', 'date', 'author', 'likes', 'last_review'
    ];

    public static function get(int $id)
    {
        if($id > 0) {
           return static::find()
              ->select(self::$fieldset_1)
              ->where(['id' => $id])
              ->asArray()
              ->one();
        }
   }

   public static function getList()
   {
      return static::find()
           ->select(self::$fieldset_2)
           ->asArray()
           ->all();
   }

}

В контроллере

class MyController extends Controller{

    public function actionListing(){
        return $this->asJson(MyModel::getList());
    }

    public function actionDetails($id){
        return $this->asJson(MyModel::get((int)$id));
    }

}
...