我不知道如何使用Laravel Eloquent来解决这个问题。所以,我在这里发布了我的问题。
我有这样的表:
+-------------+ +------------------------+
| POSTS | | COMMENTS |
|-------------| |------------------------|
| id | title | | id | text | post_id |
|-----+-------| |----+-------------------|
| 1 | A | | 1 | Lorem | 1 |
| 2 | B | | 2 | Ipsum | 1 |
+-------------+ | 3 | Dolor | 1 |
| 4 | Sit | 1 |
| 5 | Amet | 2 |
| 6 | Lorem 2 | 2 |
+------------------------+
我目前有2个型号,邮政模型
class Post extends Model
{
public function comment() {
$this->hasMany('App\Comment');
}
}
和评论模型
class Comment extends Model
{
public function comment() {
$this->belongsTo('App\Post');
}
}
问题是,我应该在控制器上做什么,这样我才能让每个帖子都有评论计数结果?或者简单地说,就像下表一样。
+-----------------------------------------+
| COMMENT COUNT |
|-----------------------------------------|
| posts.id | count(comments.post_id) AS n |
|----------+------------------------------|
| 1 | 4 |
| 2 | 2 |
+-----------------------------------------+
感谢。
答案 0 :(得分:0)
你忘了归还关系。因此,模型应定义为:
class Post extends Model
{
public function comments()
{
return $this->hasMany('App\Comment');
}
}
class Comment extends Model
{
public function post()
{
return $this->belongsTo('App\Post');
}
}
现在您可以将帖子评论计为:
echo $post->comments()->count();
甚至
echo $post->comments->count();
这两种方法之间的区别在于最新的方法是获取和缓存帖子评论。