2017-07-07 71 views
0

我想显示留在帖子上的最后一个回复。但只有它的名称和日期。我试了下面的东西Laravel显示最后回复留在帖子

我认为这个人应该做的是看看帖子的回复。按ID排序,然后显示第一个用户名。但它不起作用。 $topic->replies->sortBydesc('id')->first()->user->username }}

我也试过这个,我要求在整个论坛的所有答复,并显示最后一个。它的工作,但我不是与该职位有关的人。 {{ $allposts->sortBydesc('id')->first()->user->username }}

有谁知道我该如何做这项工作? 目前,我传递这两个到视图(没有什么不对这些,他们的工作,但我觉得应该补上一)提前

+0

是topic->答复一个单独的模型,它是通过关系连接?如果是这样,你需要加载类似于topic->主题的内容。 – M31

+0

我将主题传递给了视图,如果我做了类似'{{$ topic-> respond-> count()}}'它计算每个与该主题相关的回复,所以像'$ topic->回复 - > sortBydesc('id') - > first() - > user-> username}}'会对我有意义。关系认为我有错误。 –

回答

0

public function show($id) 
{ 


    $topics = Topic::with('theme')->find($id); 
    $theme = Theme::with('topics')->find($id); 

    return view('themes.theme')->with('topics', $topics)->with('theme', $theme); 
} 

谢谢如果你正在尝试得到topicreplies你需要急切加载。此外,如果你有与user谁回复急切加载它的关系。

使用latest()获取最新回复的方法。

仅限于namedate我们有select()

public function show($id) 
{ 
    $topics = $topic->with('replies' => function($query) { 
     $query->with('user')->select('name', 'created_at')->latest(); 
    }); 
    $theme = Theme::with('topics')->find($id); 

    return view('themes.theme', compact('topics', 'theme')); 
} 
+0

我必须把这是控制器吗?因为它不会让我。它给我一个错误 –

+0

再次看看它。你得到什么错误? –

+0

它只是在答复和箭头和单词主题之间给出了一条红线。 –