我正在使用Laravel和MySQL,有一个名为post的表,代表用户可以在其上进行评论的帖子。现在我想按每个帖子的评论数量升序/降序排序,如何在Laravel中实现?我不想在post表中添加一个字段来跟踪每个帖子的评论数,因为每次添加/删除评论或评论的评论时手动更新该字段会让我疯掉...
以下是我创建posts表和comments表的方法:
在评论模型中:
以下是我创建posts表和comments表的方法:
Schema::create('posts', function($table) {
$table->increments('id');
$table->string('title', 100)->unique();
$table->string('content', 2000);
$table->timestamps();
});
Schema::create('comments', function($table) {
$table->increments('id');
$table->string('content', 2000);
$table->unsignedInteger('post_id');
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade')->onUpdate('cascade');
$table->unsignedInteger('parent_id')->nullable();
$table->foreign('parent_id')->references('id')->on('comments')->onDelete('cascade')->onUpdate('cascade');
$table->timestamps();
});
这是我在我的Post模型中设置帖子和评论之间关系的方法:
public function comments() {
return $this->hasMany('Comment', 'post_id');
}
在评论模型中:
public function post() {
return $this->belongsTo('Post', 'post_id');
}