我正在使用Yii2下的REST API,但是我对每一次不同的操作该模型应该返回什么有一个疑问。
例如,在列出动作时,我需要例如返回4个属性,而对于细节动作,我需要从同一模型返回10个属性。
Yii2中实现此目标的最佳或标准方法是什么。
示例:
/文章
返回[id,标题,图像,日期]
/ articles / 7
返回[id,标题,图像,日期,作者,喜欢,最新评论]
谢谢
答案 0 :(得分:0)
只需在模型中编写方法。
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));
}
}
答案 1 :(得分:0)
适用于/ article / 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();
}