我目前正在从事从头开始创建的社交网络项目。我需要创建一堵墙,显示用户和他的朋友的消息和评论以及“喜欢”和附件。当前为每条消息循环返回的喜欢、附件和评论:
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();
}
}
它看起来丑陋而复杂,特别是假设我也需要以这种方式获得喜欢和附件。那么有没有更好的方法来处理这个问题?