我正在Yii 2下开发RESTAPI,但是我有一个问题,模型应该根据不同的操作返回什么。例如,在清单操作中,我需要返回4个属性,而对于细节操作,我需要从同一模型中返回10个属性。在Yii 2中实现这一点的最佳或标准方式是什么?
范例:/文章
return [id,标题,图像,日期]
/文章/7
return [id,标题,图片,日期,作者,喜欢,last_review]谢谢你
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(); }
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)); } }
2条答案
按热度按时间piwo6bdm1#
为/第/7条:
或
用于/文章:
gr8qqesn2#
只需在模型中编写方法。
在控制器中