微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算 Laravel 8 中每个帖子的评论数的问题

如何解决计算 Laravel 8 中每个帖子的评论数的问题

我正在尝试使用 laravel eloquent 来计算 laravel 8 中单个帖子的评论数量。但我没有在刀片中获得任何值,它在视图中只是空白。

后模型

public function comments()
{
    return $this->hasMany('App\Models\Comment');
}

评论模型

public function post()
{
    return $this->belongsTo('App\Models\Post');
}

控制器

use App\Models\Post;
use App\Models\Comment;
use Illuminate\Database\Eloquent\Model;

public function index(Post $post)
{
    $counters = $post->withCount('comments')
                ->orderBy('created_at','desc');

    return view('app/blog',compact('counters'));
}

查看(刀片文件

@foreach($counters as $counter)
    <p>Comments :$counter->comments_count</p>
@endforeach

解决方法

首先,将刀片更改为回显输出。

@foreach($counters as $counter)
    <p>Comments: {{ $counter->comments_count }}</p>
@endforeach

然后将您的控制器更改为

public function index(Post $post)
{
    $counters = Post::withCount('comments')
    ->orderBy('created_at','desc')
    ->get();

    return view('app/blog',compact('counters'));
}

您使用了错误的 withCount 方法。它旨在用于查询构建器,而不是用于单个模型。

此控制器现在将返回所有帖子,然后将 comments_count 附加到每个帖子。这似乎是你想要的。


我还在索引签名中留下了 $post,但它可能会被删除,因为您的刀片似乎需要所有帖子。

如果不是,则将控制器更改为:

public function index(Post $post)
{
    $counters = Post::withCount('comments')
    ->where('id',$post->id)
    ->orderBy('created_at',compact('counters'));
}

或者,也许您想要该帖子中的所有评论,在这种情况下,请执行此操作。

public function index(Post $post)
{
    $counters = $post->comments()->count();
    return view('app/blog',compact('counters'));
}
<p>Comments: {{ $counters }}</p>

请注意,我在评论关系上使用了括号。这是为了加快查询速度,因为它只会查询数据库的记录数,而不是获取所有数据,然后再计算记录数。
此外,我从刀片中删除了 foreach,因为 $counters 现在只返回一个整数。

,
you don't have to do a query for this. Just do the following

**in controller**

 public function index(Post $post)

{
     $counters = count($post->comments);
    return view('app/blog',compact('counters'));
}
**and in view(blade file)**

<p>Comments :{{$counters }}</p>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?