2017-01-29 84 views
2

好這個問題是這樣的如何訪問一個函數的數據到另一個laravel

我在AController

public function index() 
{ 
    $store = Store::(query)(to)(rows)->first(); 

    return view('store.index', compact('store')); 
} 

功能現在在同一個控制器我有另一個功能

public function abc() 
{ 
    return view('store.abc'); 
} 

現在爲了這個功能,我也想發送compact('store')到視圖abc我可以再次在中添加查詢函數,但這將是懶惰和性能問題。有沒有辦法可以在其他函數中訪問$store對象?

回答

1

如果我正確理解你,你想從兩個地方訪問相同的查詢。所以提取商店到另一種方法如

private function store() 
{ 
    $minutes = 10; // set here 
    return Cache::remember('users', $minutes, function() { 
     return Store::(query)(to)(rows)->first(); 
    });   
} 

另外我有cached的查詢。所以它在一個不受約束的時間執行一次。

然後從其他兩種方法一樣訪問它,

public function index() 
{ 
    $store = $this->store(); 
    return view('store.index', compact('store')); 
} 

public function abc() 
{ 
    $store = $this->store(); 
    return view('store.abc', compact('store')); 
} 
+0

每次我調用'store()'它每次都會運行查詢。這將是無效的。 – Alex

+0

讓我爲你更新答案。您可以緩存查詢。它在Laravel 4.2中可用。我需要檢查它是否仍然可用於laravel 5.1。 – Gayan

+0

好吧我正在等待,我正在使用Laravel5.3 – Alex

0

嘗試以下。不測試,但它應該爲你工作。

class AController 
{ 
    public function getStore() 
    { 
     $store = Store::(query)(to)(rows)->first(); 

     return compact('store'); 
    } 

    public function index() 
    { 
     return view('store.index', $this->getStore()); 
    } 

    public function abc() 
    { 
     return view('store.abc', $this->getStore()); 
    } 

} 
相關問題