2017-02-24 43 views
0

我正在用Laravel 5.4編寫一個簡單的CMS。如何在Laravel 5中高效地創建和存儲導航?

我正在尋找一個類似wordpress的子菜單導航管理。我以多層方式對頁面進行編碼,以便可以有多個頁面級別(子級等)。在MySql中,我有一個包含parent_id的各種信息的「Pages」表。

我正在創建一個'導航生成器',它允許內容編寫者通過選擇頁面並將它們保存到數據庫來創建多個頁面上的側邊欄子導航。我希望他們能夠保存菜單,並將它們包含在他們認爲合適的任何頁面上。

問題來了。起初,我想讓它很簡單 - 只需創建一個子菜單模式存儲JSON所有pageIds(讓子頁面結構):

Submenu Model 
id | name[string] | page_ids[json] 

但是,我看到了很多的問題,這種方法。如果我們在頁面上有10個頁面的5個菜單,在解析sumbenu模型後,我需要單獨從數據庫中獲取每個頁面(另外還有一些,因爲我需要父母的slu in以便建立網址)。這看起來並不是很高效。

我假設一個更明智的方法是在用戶選擇頁面後獲取整個頁面集合,並以某種方式將其保存在數據庫中。而這我不知道如何處理。

我看着Laravel-menu插件,但我不認爲這能達到什麼我的目標

如何解決這個任何想法,將不勝感激。關於如何做到這一點,必須有一些最佳實踐,但我無法找到任何資源。

回答

0

發佈我在這裏解決這個問題的方式。如上所述,我決定建立一個帶有所有頁面ID的單獨的Subnav模型。然後爲了防止太多的mysql調用,我只是緩存結果,並且每次更新subnav時,我都會刷新緩存。