我不明白从MVC框架中的数据库获取数据的最佳做法是什么。我见过两个场景:
$feeds = Feedback::find()->orderBy('RAND()')->limit(4)->all();
$categories = Category::getCategoriesList();
正确的方法是什么?我应该在Controller类中执行哪些任务以及应该在Model类中执行哪些任务?
答案 0 :(得分:0)
在模型中定义自定义查询方法。在适当时调用控制器中的那些模型方法以检索所需数据。 Yii2使用activerecord
ORM设计模式;这意味着每个表通常都有一个表示表的模型类。
答案 1 :(得分:0)
如果你想直接用数据提供者(arrraydataprovider,activedataprovider等)获取数据,你可以使用First Method是最好的方法。如果你想获取数据并将数据返回到任何小部件,如(grideview,listview等)你可以使用第二种方法
答案 2 :(得分:-1)
有很多争论where to put your business logic in MVC。
一般来说,在MVC architectures中,至少将数据库逻辑(模型)与Controller分开。
数据库特定查询在模型中完成。
Controller中的方法处理请求(解析路由)并创建正确的响应(视图或纯文本数据)。
示例
如果你有一个路由/网址/feedback
,你的FeedbackController中会有一个'feedback()'方法。
class FeedbackController {
use Feedback;
public function feedback(){
return Feedback::list();
}
}
在你的模型(反馈)中,你现在需要一个方法列表()。
class Feedback extends Model {
public static function list(){
return ( your_database_specific_query_which_returns_a_list_of_records );
}
}