Yii活动记录模型中的2个字段功能

ukxgm1gy  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(146)

我正在Yii 2下开发RESTAPI,但是我有一个问题,模型应该根据不同的操作返回什么。
例如,在清单操作中,我需要返回4个属性,而对于细节操作,我需要从同一模型中返回10个属性。
在Yii 2中实现这一点的最佳或标准方式是什么?

范例:
/文章

return [id,标题,图像,日期]

/文章/7

return [id,标题,图片,日期,作者,喜欢,last_review]
谢谢你

piwo6bdm

piwo6bdm1#

为/第/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();
}
gr8qqesn

gr8qqesn2#

只需在模型中编写方法。

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));
    }

}

相关问题