我有一个连接查询,它给了我一个结果数组。
我已加入评论,当我发表评论并发表多条评论时,不会将其置于父帖之下,而是重复评论。
<div class="stream-posts">
<?php if(isset($posts)): ?>
<?php foreach(array_merge($posts) as $post): ?>
<div id="stream_post_<?php echo $post['stream_id']; ?>" class="span6 stream-content">
<span class="user"><a href="#"><?php echo $post['full_name']; ?> </a> <abbr class="stream-posted"><?php echo Date::time_ago( $post['date']) ?></abbr> </span>
<p><?php echo Input::auto_link(Input::nl2br_limit($post['stream_text'], "2")); ?></p>
<div class="clear"></div>
<div class="feedback">
<a href="#" class="like" rel="nofollow">Tetszik</a> -
<a href="#" class="comment" rel="nofollow">Hozzászólás</a>
</div>
<div class="clear"></div>
<div class="comments-text">
<?php if(count($post['like_id']) > 0): ?>
<?php echo count($post['like_id']); ?>
<?php endif; ?>
</div>
<div class="stream-comment">
<form class="stream-comment-form">
<input type="hidden" name="comment_post" value="<?php echo $post['stream_id']; ?>">
<textarea name="comment_text"></textarea>
<button type="submit" class="btn btn-primary btn-mini pull-right">Hozzászólok</button>
</form>
</div>
</div>
<div class="clear"></div>
<?php endforeach; ?>
<?php endif; ?>
</div>
我知道foreach
是问题,想问一下是否有办法合并这些结果而不是重复它?
我试过array_merge
,但没有运气。
static function get_stream()
{
$query = DB::select()->from('stream_post');
$query->join('stream_comment', 'LEFT');
$query->on('stream_post.stream_id', '=', 'stream_comment.comment_stream_id');
$query->join('stream_likes', 'LEFT');
$query->on('stream_post.stream_id', '=', 'stream_likes.like_stream_id');
$query->join('users_metadata');
$query->on('stream_post.user_id', '=', 'users_metadata.user_id');
$query->group_by('stream_post.stream_id');
$query->order_by('stream_post.stream_id', 'DESC');
$result = $query->execute();
if(count($result) > 0) {
foreach($result as $row)
{
$data[] = $row;
}
return $data;
}
}
答案 0 :(得分:0)
array_merge($posts)
什么都不做。
问题必须是$posts
数组中的数据,我对给出的数据的猜测是你没有在SQL查询中执行GROUP BY
来取出注释,结果来自数据库的倍数。