我正在尝试构建一个简单的想法跟踪/评论系统,在摘要视图页面上,我想要了解每个帖子的一些细节。目前,帖子和回复都位于一个posts
表格中,其中newtopic
布尔值用于指定顶级帖子,可居住replyto
用于指定评论。
所以我的控制器就像是这样的摘要页面:
public function index()
{
$ideas = DB::table('posts')->addSelect(DB::raw('*,posts.created_at as pca'))
->join('users', 'users.id', '=', 'posts.uid')
->where('newtopic','1')->orderBy('posts.id','desc')->get();
return view('ideas.home', ['ideas' => $ideas]);
}
这很好用,但我还想至少提取评论计数和投票计数,并将摘要信息传递给视图。我看不到在控制器级别执行此操作的好方法,因为@foreach
在到达视图之前未触及。我对laravel和一般的MVC模式还不太新,是否需要做一个子控制器/子视图类型来获得所需的结果?
home.blade.php:
@extends('master')
@section('content')
@foreach($ideas as $idea)
<div class="container">
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
<a href="{{ 'ideas/'.$idea->id }}">{{ $idea->subject }}</a>
</h3>
</div>
<div class="panel-body">
{{ $idea->content }}
</div>
<div class="panel-footer">
Posted by {{ $idea->username }} on {{ $idea->pca }}
</div>
</div>
</div>
@endforeach
@stop
答案 0 :(得分:2)
给这个镜头,也许你会得到你想要的结果。
$data = Idea::with('users','comments') -> where('newtopic',1) -> orderBy('id','DESC') -> get();
在你的视图中,你会像你一样迭代,
@foreach($ideas as $idea)
$idea -> user -> username;
$idea -> comment -> count;
$idea -> content;
$idea -> ...
@endforeach
答案 1 :(得分:1)
在->get()
使用->toArray()
后,您将使用数组进行迭代。