Php 在Laravel中使用模型的正确方法是什么?
你能帮我吗?我目前正在自己学习拉威尔,我遵循了拉腊卡斯特的教程,这真是太棒了。在Laravel之前,我在我的项目中使用CodeIgniter和Opencart,我开始学习Laravel,因为我想学习一个新的框架 在CI和Opencart中,所有数据库查询都在模型中。但在Laravel中,您可以在Controller?中执行和查询?。这是在Laravel中处理查询的正确方法吗 我在控制器中有这样的代码:Php 在Laravel中使用模型的正确方法是什么?,php,laravel,opencart,Php,Laravel,Opencart,你能帮我吗?我目前正在自己学习拉威尔,我遵循了拉腊卡斯特的教程,这真是太棒了。在Laravel之前,我在我的项目中使用CodeIgniter和Opencart,我开始学习Laravel,因为我想学习一个新的框架 在CI和Opencart中,所有数据库查询都在模型中。但在Laravel中,您可以在Controller?中执行和查询?。这是在Laravel中处理查询的正确方法吗 我在控制器中有这样的代码: <?php namespace App\Http\Controllers; use A
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Article;
use Illuminate\Http\Request;
class ArticlesController extends Controller {
public function index() {
$articles = Article::all();
return view('articles.index')->with('articles', $articles);
}
}
是的,这对于小型应用来说是非常好的。 但是,对于大型应用程序,我建议使用存储库,因为它们将您的模型与控制器分离,这使它们更具可读性和可测试性 您的ArticlesController将转换为以下内容:
public function __construct(ArticleRepository $articles)
{
$this->articles = $articles;
}
对你来说,这是一个明智的决定。但是为什么呢?
基本上,存储库是应用程序和存储之间的“网关”。
使用存储库,您可以在单个位置找到“数据库查询”
让我们考虑一下模型文章。
您不必一直使用静态的文章实例,只需创建一个文章存储库即可。
将此回购注入控制器,例如,并使用存储在ArticleRepository中的“功能”
你什么意思?
让我们考虑一个文章库。我将在我的文章应用程序模型中多次使用什么?我需要全选,按id选择,插入,更新,删除。基本上就是这些“东西”。那么,如果我把这些东西都放在一个地方
class ArticleRepository {
public function all(){}
public function getById($id){}
public function insert($data){}
public function update($data){}
public function delete($id){}
}
将此ArticleRepository注入控制器中。要执行此操作,请在此处阅读关于IoC容器的内容:
控制器中的构造如下所示:
public function __construct(ArticleRepository $articles)
{
$this->articles = $articles;
}
总之,当您需要在控制器中获取所有文章时,只需执行以下操作:
public function index()
{
$articles = $this->articles->all();
return View::make('articles.index')->with(['articles' => $articles]);
}
通过这种实践,您将拥有一个干净的应用程序,该应用程序具有可测试的控制器和漂亮的组织和设计
听着,我尽可能地说教你理解这个概念。使用存储库不仅仅是一种方法。所以我让这些链接出现在评论中。还有其他参考资料。
我相信你很快就会明白的。
学习成功!:
如果你在laracasts有账户,请看下面这个:另一个:谢谢你对此的明确解释。我也会检查你的参考链接