2017-03-23 421 views
0

我正在使用Laravel構建一個應用程序。我不得不在不同的頁面上運行查詢。所以同樣的查詢我不得不在幾個控制器中運行。但我認爲這不是一個好的編碼習慣。我可以在哪裏編寫一個單獨的程序並執行它,形成多個控制器,而不是再次寫入它? 我知道laravel雄辯和渴望加載也。如果我有一個大的查詢假設加入兩個三表我如何實現呢?如何減少查詢冗餘?

提前致謝。

+0

我不完全理解你的問題。你是在尋求一種避免爲同一個查詢重複_code_或避免多次運行相同查詢的方法? –

+0

避免多次運行相同的查詢 – User57

+0

查詢在做什麼? –

回答

1

您需要在文件夾助手(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); 

的任何地方「使用應用程序\助手\主要用途; 「當然

這使您可以在所有控制器中使用此功能,而不是每次重複。

0

您可以使用與所有視圖共享數據。

您可以通過視圖Facade分享數據。有了這個視圖就可以訪問數據。無需查詢來自多個控制器的數據。

AppServiceProvider類>引導方法

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

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

不要忘記使用照亮的\ Support \外立面\查看在班上名列前茅

您還可以使用View Composer來實現類似的情景。