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