Как я могу получить самую длинную серию выигрышей и проигрышей игрока, используя Laravel Eloquent или Php? - PullRequest
1 голос
/ 29 мая 2020

В настоящее время у меня есть таблица, в которой хранятся некоторые футбольные (или футбольные) результаты.

Каждая строка в таблице предназначена для конкретного игрока в этом матче с исходом матча.

ID_у_ исхода 1 - выигрыш, ID_излучения 2 - проигрыш, ID_Результата 3 - ничья.

Я хочу попробовать узнать самую длинную серию побед для игрока. Например, предположим, что я user_id 1, у которого 10 строк в этой таблице, потому что я сыграл 10 матчей. Упорядочить по match_date_time (чтобы данные были в порядке сыгранных матчей), как я могу подсчитать количество выигранных матчей подряд? Так что я могу найти самую длинную серию побед для каждого игрока. Я также хочу сделать то же самое и для самой длинной полосы неудач.

Schema::create('player_match_stats', function (Blueprint $table) {
        $table->id();
        $table->unsignedInteger('season_id')->nullable();
        $table->foreignId('match_id')->constrained('matches')->onDelete('cascade');
        $table->unsignedInteger('user_id');
        $table->unsignedInteger('outcome_id')->nullable();
        $table->unsignedInteger('team_name_id')->nullable();
        $table->dateTime('match_date_time')();
        $table->timestamps();
    });

В идеале я хотел бы иметь возможность сделать это через Eloquent / PHP, если это возможно.

Любая помощь будет очень признательна. Спасибо.

1 Ответ

0 голосов
/ 29 мая 2020

Вот решение:

  1. Вы получаете даты проигрышей и ничью игрока в массив.

  2. Вы делаете для l oop. Вы делаете запрос для подсчета выигрышей между датами i и i + 1. Обратите внимание, что при первом запуске (i == 0) вам нужно получить выигрыши до этой даты, а при последнем запуске (i == длина массива) вам нужно получить выигрыши после этой даты.

  3. Вы создаете переменную, чтобы всегда хранить наибольшее число.

Надеюсь, это поможет :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...