Laravel在控制器或模型类中放置查询

时间:2016-11-19 17:01:08

标签: php laravel

#1
Class controller {
    $customer = Model\customer::find($id);
}

#2
Class controller {
    $customer = new Model\customer;
    $customer = $customer->data($id);
}

Class Model {
   public function data($id) {
        return self::find($id);
   }
}

我是larava的新手,我有一个关于MVC查询的问题。

我看到很多人把查询放在控制器里面,比如#1

我通常喜欢将查询放在模型类中。

任何建议?

2 个答案:

答案 0 :(得分:1)

可以直接使用模型的find()方法来检索实体。

如果您正在开发更大的应用程序,则应考虑将所有逻辑移动到您自己的类中。控制器应该只收集来自http请求,会话等的输入,并调用服务上的方法来完成实际工作。这样,您的代码就不会粘在控制器动作或路径上。

答案 1 :(得分:1)

据我说MVC意味着 - 模型视图控制器。

在一般语言中,模型应包含与数据库查询相关的内容,而在查看中,您应始终使用变量来填充视图数据,最后使用控制器通常用于捕获请求并通过在请求时执行某些逻辑功能来发送响应。

<?php 

namespace App\Models;

class ExampleModel
{
    // All the database related methods like - all, paginate, find, where, etc would goes in the model...
}

如果是视图

<html>
  ...
  YOUR_CONTENT_HERE
  ...
</html>

,如果是Controller,

<?php 

namespace App\Controllers;

class ExampleController
{
    public function index()
    {
       $request = request()->all();
       ... do some logical work here ...
       return response($data);
    }
}

这就像MVC代码结构一样 - 在我看来

希望这有帮助!