2017-02-24 44 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时,我都会刷新缓存。