Model view controller Yii2-控制器或模型中的功能

Model view controller Yii2-控制器或模型中的功能,model-view-controller,yii2,Model View Controller,Yii2,我在控制器中有这样的功能 public function actionNext(){ $category = $this->getCategory(); $not_finished = $this->getQuestionFromCategory($category); if(!empty($not_finished)){ $next_question_id = getNextQuestionId(); $this->up

我在控制器中有这样的功能

public function actionNext(){
    $category = $this->getCategory();
    $not_finished = $this->getQuestionFromCategory($category);
    if(!empty($not_finished)){
        $next_question_id = getNextQuestionId();
        $this->updateNextQuestion();
    }
    else{
        addNextCategory();

    }
}
我的问题是:所有的功能

  • getCategory
  • getQuestionFromCategory
  • getNextQuestionId
  • updateNextQuestion
  • addNextCategory

示例中的数据也应该在模型或控制器中(所有函数都是对数据库的请求)。

通常与数据库相关的函数在模型中,特别是模型扩展活动记录,因此还包含相关的sql/schema/模型相关函数。在您的例子中,请考虑函数
getCategory
,并且可能
getQuestionFormCategory

与支持控制器操作的服务相关的功能放在控制器中。在您的情况下,
genNextQuestionId
updateNewQuestion
addNextQuestion

主要规则是:关于实体的结构知识在模型中,关于战术行为或控制器中


显然,与排序和查找相关的部分位于…搜索类中。

问题和类别听起来像模型对象。创建那些类(从Model或ActiveRecord派生)并在那里添加这些函数。像这样的问题不符合SO规则。顺便说一句,这取决于网站的这一部分有多大。从技术上讲,您可以在一个模型中分离验证,在另一个模型中分离帮助程序,等等。然后是要在控制器中的视图和模型之间进行委托的代码。例如QuestionModel和QuestionHelperModel。然而,对于几个函数,它们都可以放在一个函数中,即:QuestionModel。在这里,您可以使用自己的视图、多个模型和控制器创建自己的模块。。