如何减少查询冗余?

时间:2017-03-23 08:26:11

标签: php laravel

我正在使用Laravel构建应用程序。我必须在不同的页面中运行查询。所以同样的Query我必须在几个控制器中运行。但我认为这不是一个很好的编码实践..我可以写一个单一的并从几个控制器执行它而不是再次写入它? 我知道laravel雄辩和渴望加载。如果我有一个大的查询,假设加入两个三个表我该如何实现呢?

提前感谢。

2 个答案:

答案 0 :(得分:1)

您需要在Helpers(app / Helpers)文件夹中创建一个新的php文件并在其中添加新类。我以Main为例。

namespace App\Helpers;
class Main 
{
  static public function getSomething($id) {
         // ... DO something
         return var;
      }
}

接下来,您需要添加到config / app.php

    'aliases' => [
    ...
    'Main' => App\Helpers\Main::class
]

之后,您可以在项目的任何地方使用

Main::getSomething($id);

使用App \ Helpers \ Main;'当然

这允许您在所有控制器中使用此功能,而不是每次都重复它。

答案 1 :(得分:0)

您可以使用与所有视图共享数据。

您可以通过视图Facade共享数据。有了这个,每个视图都可以访问数据。无需查询来自多个控制器的数据。

你在AppServiceProvider类中的

>启动方法

// write query
$query = User::all();

// Share data
View::share("user", $query);

不要忘记在课程顶部使用Illuminate \ Support \ Facades \ View

您还可以使用View Composer来实现类似的方案。