Отображение списка пользователей с информацией о количестве голосов в Laravel - PullRequest
0 голосов
/ 25 октября 2019

Я новичок в 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 (от максимального до минимального рейтинга голосов).

Как я могу это сделать?

1 Ответ

0 голосов
/ 25 октября 2019

Попробуйте этот запрос:

$users = User::ofRoleType($role)->withCount('commentsReceived')->orderBy('commentsReceived_count', 'desc')->paginate(50);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...