普通网友 2017-11-21 19:16
浏览 33

too long

I do not understand what is best practice to get data from a database in a MVC framework. I have seen two scenario's:

  1. Do the database query in the Controller class

$feeds = Feedback::find()->orderBy('RAND()')->limit(4)->all();

  1. Do the database query in the Model class, and call this method from a Controller class

$categories = Category::getCategoriesList();

What is the correct way? Which tasks should I perform in a Controller class and which should I perform in a Model class?

  • 写回答

3条回答 默认 最新

  • dqv84329 2017-11-21 19:21
    关注

    There is much debate where to put your business logic in MVC.

    Generally speaking, in MVC architectures one separates at least database logic (Model) from your Controller.

    Database specific queries are done in the model.

    Methods in your Controller handle requests (resolve routes) and create the proper response (a view or plain data).

    Example

    If you have a route/url /feedback you would have a 'feedback()' method in your FeedbackController.

    class FeedbackController {
    
      use Feedback; 
    
      public function feedback(){
         return Feedback::list();
      }
    }
    

    In your Model (Feedback) you now need a method list().

    class Feedback extends Model {
    
      public static function list(){
         return ( your_database_specific_query_which_returns_a_list_of_records );
      }
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端