Я новичок в Laravel. Я использую в своем проекте Laravel 5.8.
У меня есть этот код:
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->char('enable', 1)->default(0);
$table->string('email', 120)->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
....
$table->engine = "InnoDB";
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
}
Schema::create('comments', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string('commentable_type');
$table->bigInteger('commentable_id');
$table->char('enable', 1)->default(0);
$table->char('to_stats', 1)->default(0);
$table->tinyInteger('rating')->default(0);
$table->text('content');
$table->dateTime('date_time');
$table->ipAddress('ip');
$table->engine = "InnoDB";
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
User.php:
public function userCommentsCount()
{
return $this->hasMany('App\Comment', 'commentable_id', 'id')->where('enable', '=', '1')->where('to_stats', '=', '0');
}
Я получаю свой список пользователей из этого кода:
$users = User::ofRoleType($role)->withCount('commentsReceived')->paginate(50);
@foreach ($users as $user)
User id: $user->id <br/>
@endif
Мне нужно отобразить список пользователей с количеством голосов (общее количество комментариев на каждого пользователя), которые они получили.
В результате мне нужно:
@foreach ($users as $user)
User id: $user->id has total votes: ...... <br/>
@endif
Я хочу отсортировать свой результат DESC (от максимального до минимального рейтинга голосов).
Как я могу это сделать?