【问题标题】:Laravel show last reply left on postLaravel 在帖子中显示最后的回复
【发布时间】:2017-07-08 03:10:43
【问题描述】:

我正在尝试显示帖子上留下的最后回复。但只有它的名称和日期。我尝试了以下方法

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

我也试过这个,我要求整个论坛的所有回复并显示最后一个。它有效,但我不是与帖子相关的人。 {{ $allposts->sortBydesc('id')->first()->user->username }}

有谁知道我怎样才能做到这一点? 目前,我正在将这两个传递到视图中(这些没有任何问题,它们有效,但我认为应该添加一些东西)

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);
}

提前致谢

【问题讨论】:

  • 是主题->回复一个由关系连接的单独模型?如果是这样,您需要预先加载类似于 topic->theme 的内容。
  • 我将主题传递给视图,如果我执行 {{ $topic->replies->count() }} 之类的操作,它会计算与该主题相关的每个回复,因此 $topic->replies->sortBydesc('id')->first()->user->username }} 之类的操作对我来说很有意义。相信我的关系并没有错。

标签: php laravel laravel-5 laravel-5.2 laravel-5.1


【解决方案1】:

如果您尝试获取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'));
}

【讨论】:

  • 我得说这是Controller吧?因为它不让我。它给了我一个错误
  • 它只是在回复和箭头之间以及单词主题上划了一条红线。
猜你喜欢
  • 2021-05-14
  • 1970-01-01
  • 2017-10-11
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
相关资源
最近更新 更多