只是拉皮条我的cms和试图简化一些常见的任务,如搜索。cms有许多不同的模块,每个模块都可以被动态路由屏蔽。
整个系统非常坚固,而且非常灵活,但这正是搜索结果页面令人头痛的地方。
为了保持灵活性,我将基本数据放到我的搜索类中,如下所示:
$search->addTable('content', array('title', 'excerpt', 'body', 'meta_keywords', 'meta_description'));
$search->addTable('event', array('title', 'description', 'tags'));然后,我的search类将从这些变量生成one sql查询,这些变量将很好地找到结果(呃,也许‘word’现在不是最好的词,因为结果集包含来自不同表的行,所以我无法分辨哪一行属于哪个表,因为所有的结果都在一个数组中)
问题是,当我想要显示结果页面时,我需要为每个结果创建适当的urls,这是非常困难的,因为我前面提到的系统灵活性(任何内容/模块都可以被任何东西屏蔽)。
我知道我的问题是非常本地化的,而且可能过于模糊,无法以目前的形式回答,所以我会尽量澄清我的问题。我不会问你关于我的问题的最佳实践或简单的答案,但如果你能给我一些关于这些基本问题的好建议,我会非常感激的:
一如既往,请询问,而不是点击关闭,也许我可以澄清更多的情况。谢谢你,法布里克
发布于 2011-05-12 12:06:20
简单的回答是,只要我们不谈论几十个查询,执行多个查询是完全可以的。这也意味着返回的结果将是一组集合,结构类似于上面的数组,其中表名是该表的一组结果的关键。
我必须想一想,在代码中的某个地方,数组是组装在一起的。当它被组装时,您可以循环遍历它并准确地查询每个表一次。在该循环中,您拥有所需的所有上下文:表名。
然后,将数组返回给任何客户端,将其组装成结果。如果表名足以构造URL,则可以选择。如果您需要更多关于每个表的信息,比如其ID列的名称,请构造结果数组以包含每个表所需的元数据。
总的来说,看起来您的结构很好,并且为了避免多个查询而被绊倒了。不要担心这个。多个查询的问题是,当同一个*表*在一个循环中被一次又一次地查询时,当这是普遍的设计模式时,则是性能容器。
https://stackoverflow.com/questions/5976904
复制相似问题