【发布时间】:2011-10-08 16:59:01
【问题描述】:
我目前正在从事从头开始创建的社交网络项目。 我需要创建一堵墙,显示用户和他的朋友的消息和 cmets 以及“喜欢”和附件。当前每条消息循环返回的喜欢、附件和 cmets:
foreach ($messages as $message) {
$message->get_likes();
$message->get_comments();
...
}
这会导致大量查询。对于在墙页上至少有 15 条消息的每条消息,至少额外 3 条。所以我想通过创建更复杂的查询并在程序级别合并它们来减少查询的数量,如下所示:
$arr = array();
foreach ($messages as $message) {
$arr[$message->id] = $message->as_array();
$arr[$message->id]['comment'] = array();
foreach ($comments as $comment) {
if ($comment->message_id == $message->id) {
$arr[$message->id]['comment'][$comment->id] = $comment->as_array();
}
}
它看起来丑陋和复杂,特别是假设我也需要以这种方式获得喜欢和附件。那么有没有更好的方法来处理这个问题?
【问题讨论】:
标签: php sql networking architecture social