Laravel MySQL orderBy count

Estoy usando Laravel y MySQL, y tengo una tablaenviar eso representa una publicación donde los usuarios pueden comentarla, ahora quiero ordenar las publicaciones por el número de comentarios de cada publicación en orden ascendente / descendente, ¿cómo hago esto en Laravel? No quiero agregar un campo enenviar tabla para realizar un seguimiento de la cantidad de comentarios de cada publicación, porque actualizar ese campo manualmente cada vez que se agrega / elimina un comentario o un comentario de comentario me vuelve loco ...

Así es como creo mipublicaciones mesa ycomentarios mesa:

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

Y así es como configuro la relación entre publicaciones y comentarios en mi modelo de publicación:

public function comments() {
    return $this->hasMany('Comment', 'post_id');
}

Y en el modelo de comentario:

public function post() {
    return $this->belongsTo('Post', 'post_id');
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta