2013-10-28 50 views
0

我開始使用Laravel或CodeIgniter之類的PHP框架。我想我瞭解基本。保存不同型號的控制器對象

這是我的例子。

不得不承認,auth用戶後,我們去:

mysite.fr/username/ 

然後我加載所有該用戶從我的數據庫寫的書。

so the username/index controllers call the books models. 

然後,用戶可以在過濾器按鈕來只顯示爲孩子們的書籍,因此URI將是:

mysite.fr/username/books/kids 

在這裏,書模式將作出新的查詢,發現所有的書籍類別=「KIDS」

我認爲這是不好的,因爲我們已經加載了所有書籍!所以我們不需要做一個新的查詢,只需要對Books對象應用過濾器!

有沒有辦法在控制器中保存模型,然後從不同的控制器訪問它,而不必重新創建整個對象?

我想什麼做的是:

username/index 
    Books already loaded ? call the view with Book object : make the query 
username/books/categories 
    Books already loaded ? call the view for categories : make the query for this categories 

可能是不是在所有的OOP的精神,但爲什麼要爲quering我們已經有了相關信息?

我看到的唯一方法就是將模型保存在文件中......但效率不高。

非常感謝您的幫助,請原諒我的英語不是我的主要語言...

+2

您加載的所有書籍中的第一個請求,但(除非你使用某種形式的緩存),當腳本終止它們卸載......所以「書已經載入」是沒有意義的......這並不像你想象的那樣低效,它對目前爲止數百萬PHP網站的工作非常有效,並且不會引起任何問題 –

回答

2

在laravel你可以緩存結果:Cache::put($key, $value), Cache::get($key).或者你也可以通過只鏈接的->remember()方法上使用查詢緩存查詢結束。

結帳Caching 結帳Query caching

+0

是的,正如@MarkBaker建議的那樣,所以你會看到這個功能。謝謝。 – pierreaurelemartin

相關問題