Ich arbeite an einem Laravel-Projekt, bei dem ich Spielerstatistiken für verschiedene Zeiträume anzeigen muss (letzter Tag, letzte Woche, letzter Monat und insgesamt). Die Statistiken werden in einem PlayerShip-Modell gespeichert und ich muss die Statistiken basierend auf Zeiträumen abrufen.
Ich habe Tabellen, die Statistiken für jeden einzelnen Spieler anzeigen, es ist im Grunde das Gleiche 10- 12 Statistiken für jeden Zeitraum, aber die Statistiken unterscheiden sich je nach Zeitraum, in dem sie berechnet wurden, und das wird sich natürlich immer ändern.
Also, um es zusammenzufassen: Meine App muss Statistiken anzeigen, die ein Spieler hatte : letzte Woche, letzter Monat, vergangen Tag und insgesamt.
Der Code ist folgendermaßen konfiguriert: Ich hatte Migrationen, die eine Datenbankstruktur für die Tabelle bildeten, in der diese Daten gespeichert sind und aus der sie abgerufen werden. Es gibt ein „updated_at“ Feld, bei dem es sich um einen Zeitstempel handelt, der jedes Mal erneuert wird, wenn die Methode aus dem Servicecode ausgelöst wird. Ich habe es versucht, habe aber schnell gemerkt, dass so etwas nicht die gleichen Statistiken, sondern aus unterschiedlichen Zeiträumen erhalten kann, weil es einen Cron-Job gibt, der jeden Tag diesen Dienstcode ausführt, der auch die Statistiken aktualisiert.
In dieser Datenbanktabelle gibt es viele Spalten, aber jede einzelne, mit Ausnahme der Konto-ID und des Spielernamens, sind Statistiken, die berechnet werden. Ich muss wissen, ob es eine Möglichkeit gibt, die Statistiken irgendwie so zu speichern, wie sie zu einem anderen Datum waren, und sie dann so darzustellen, als wären sie vom letzten Tag, wie letzte Woche … usw. Ich habe bereits eine Methode, die die Daten von der Wargaming-API abruft und die Statistiken in dem von mir benötigten Format berechnet. Dieser Teil ist also sortiert und alles ist in Ordnung. Ich habe ihn einfach aus dem Beitrag entfernt, weil er zu lang war. Ich muss nur einen Weg finden, Statistiken zwischen den Perioden abzurufen.
Hier ist mein Servicecode, da ich glaube, dass dies der einzige Code ist, den Sie benötigen. Der Controller leitet nur weiter Dies zur Ansicht. Die Methoden, über die ich mir Sorgen mache, sind im Code-Snippet, es gibt mehr Code in der Datei, aber ich habe ihn reduziert, um euch nicht zu stören. Ich bin neu in der „ernsthafteren“ Programmierwelt, daher sind alle Antworten willkommen.
Außerdem füge ich das Schema der Datenbanktabelle ein.
Tabellenschema
Ich arbeite an einem Laravel-Projekt, bei dem ich Spielerstatistiken für verschiedene Zeiträume anzeigen muss (letzter Tag, letzte Woche, letzter Monat und insgesamt). Die Statistiken werden in einem PlayerShip-Modell gespeichert und ich muss die Statistiken basierend auf Zeiträumen abrufen. Ich habe Tabellen, die Statistiken für jeden einzelnen Spieler anzeigen, es ist im Grunde das Gleiche 10- 12 Statistiken für jeden Zeitraum, aber die Statistiken unterscheiden sich je nach Zeitraum, in dem sie berechnet wurden, und das wird sich natürlich immer ändern. Also, um es zusammenzufassen: Meine App muss Statistiken anzeigen, die ein Spieler hatte : letzte Woche, letzter Monat, vergangen Tag und insgesamt. Der Code ist folgendermaßen konfiguriert: Ich hatte Migrationen, die eine Datenbankstruktur für die Tabelle bildeten, in der diese Daten gespeichert sind und aus der sie abgerufen werden. Es gibt ein „updated_at“ Feld, bei dem es sich um einen Zeitstempel handelt, der jedes Mal erneuert wird, wenn die Methode aus dem Servicecode ausgelöst wird. Ich habe es versucht, habe aber schnell gemerkt, dass so etwas nicht die gleichen Statistiken, sondern aus unterschiedlichen Zeiträumen erhalten kann, weil es einen Cron-Job gibt, der jeden Tag diesen Dienstcode ausführt, der auch die Statistiken aktualisiert. In dieser Datenbanktabelle gibt es viele Spalten, aber jede einzelne, mit Ausnahme der Konto-ID und des Spielernamens, sind Statistiken, die berechnet werden. Ich muss wissen, ob es eine Möglichkeit gibt, die Statistiken irgendwie so zu speichern, wie sie zu einem anderen Datum waren, und sie dann so darzustellen, als wären sie vom letzten Tag, wie letzte Woche … usw. [b]Ich habe bereits eine Methode, die die Daten von der Wargaming-API abruft und die Statistiken in dem von mir benötigten Format berechnet. Dieser Teil ist also sortiert und alles ist in Ordnung. Ich habe ihn einfach aus dem Beitrag entfernt, weil er zu lang war. Ich muss nur einen Weg finden, Statistiken zwischen den Perioden abzurufen.[/b] Hier ist mein Servicecode, da ich glaube, dass dies der einzige Code ist, den Sie benötigen. Der Controller leitet nur weiter Dies zur Ansicht. Die Methoden, über die ich mir Sorgen mache, sind im Code-Snippet, es gibt mehr Code in der Datei, aber ich habe ihn reduziert, um euch nicht zu stören. Ich bin neu in der „ernsthafteren“ Programmierwelt, daher sind alle Antworten willkommen. Außerdem füge ich das Schema der Datenbanktabelle ein. Tabellenschema [code]('id', 'bigint(20) unsigned'), ('ship_id', 'bigint(20) unsigned'), ('battles_played', 'int(11)'), ('wins_count', 'int(11)'), ('damage_dealt', 'bigint(20)'), ('average_damage', 'bigint(20)'), ('frags', 'int(11)'), ('xp', 'int(11)'), ('survival_rate', 'double'), ('created_at', 'timestamp'), ('updated_at', 'timestamp'), ('account_id', 'bigint(20) unsigned'), ('player_name', 'varchar(255)'), ('distance', 'int(11)'), ('pve_battles', 'int(11)'), ('pve_wins', 'int(11)'), ('pve_frags', 'int(11)'), ('pve_xp', 'int(11)'), ('pve_survived_battles', 'int(11)'), ('pvp_battles', 'int(11)'), ('pvp_wins', 'int(11)'), ('pvp_frags', 'int(11)'), ('pvp_xp', 'int(11)'), ('pvp_survived_battles', 'int(11)'), ('club_frags', 'int(11)'), ('club_xp', 'int(11)'), ('club_battles', 'int(11)'), ('club_wins', 'int(11)'), ('club_survived_battles', 'int(11)'), ('rank_battles', 'int(11)'), ('rank_wins', 'int(11)'), ('rank_frags', 'int(11)'), ('rank_xp', 'int(11)'), ('rank_survived_battles', 'int(11)'), ('wn8', 'int(11)'), ('ship_name', 'varchar(255)'), ('ship_type', 'varchar(255)'), ('ship_tier', 'int(11)'), ('ship_nation', 'varchar(255)'), ('total_player_wins', 'int(11)'), ('last_battle_time', 'int(10) unsigned'), ('capture', 'int(11)'), ('defense', 'int(11)'), ('spotted', 'int(11)') [/code] Servicecode [code] public function getTopPlayersLast24Hours() { $last24Hours = now()->subDays(1);
//get stats for each player, based on a period: 24, 7, 30, overall
public function getPlayerStatsLastDay($account_id) { $playerStatistics = PlayerShip::select( 'battles_played as battles', 'wins_count as wins', 'ship_tier as tier', 'survival_rate as survived', 'damage_dealt as damage', 'frags as frags', 'xp as xp', 'spotted as spotted', 'capture as capture', 'defend as defend', 'wn8 as wn8' ) ->where('account_id', $account_id) ->where('updated_at', '>=', now()->subDay()) ->first(); Log::info($playerStatistics);
return $playerStatistics ? $playerStatistics->toArray() : []; } public function getPlayerStatsLastWeek($account_id) { $playerStatistics = PlayerShip::select( 'battles_played as battles', 'wins_count as wins', 'ship_tier as tier', 'survival_rate as survived', 'damage_dealt as damage', 'frags as frags', 'xp as xp', 'spotted as spotted', 'capture as capture', 'defend as defend', 'wn8 as wn8' ) ->where('account_id', $account_id) ->where('updated_at', '>=', now()->subWeek()) ->first();
public function getPlayerStatsLastMonth($account_id) { $playerStatistics = PlayerShip::select( 'battles_played as battles', 'wins_count as wins', 'ship_tier as tier', 'survival_rate as survived', 'damage_dealt as damage', 'frags as frags', 'xp as xp', 'spotted as spotted', 'capture as capture', 'defend as defend', 'wn8 as wn8' ) ->where('account_id', $account_id) ->where('updated_at', '>=', now()->subMonth()) ->first(); Log::info($playerStatistics);
public function getPlayerStatsOverall($account_id) { $playerStatistics = PlayerShip::select( 'battles_played as battles', 'wins_count as wins', 'ship_tier as tier', 'survival_rate as survived', 'damage_dealt as damage', 'frags as frags', 'xp as xp', 'spotted as spotted', 'capture as capture', 'defend as defend', 'wn8 as wn8' ) ->where('account_id', $account_id) ->first(); Log::info($playerStatistics);
Ich arbeite an einem Laravel-Projekt, bei dem ich Spielerstatistiken für verschiedene Zeiträume anzeigen muss (letzter Tag, letzte Woche, letzter Monat und insgesamt). Die Statistiken werden in einem...
Ich muss Spielerstatistiken für den letzten Tag, die letzte Woche, den letzten Monat und insgesamt anzeigen. Die Statistiken werden in einem PlayerShip-Modell gespeichert. Ich habe Tabellen, die...
Ich muss Spielerstatistiken für den letzten Tag, die letzte Woche, den letzten Monat und insgesamt anzeigen. Die Statistiken werden in einem PlayerShip-Modell gespeichert. Ich habe Tabellen, die...
Was ich versuche, ist, mithilfe der nativen Android-Bibliotheken ein Startdatum und ein letztes Datum des letzten Monats sowie das erste Datum des Jahres zu ermitteln. Ich habe es mit LocalDate...
Erstellen Sie das Arbeitnehmer -Überwachungs -Service -Tool. Ich benutze Windows Service, um das Tool zu erstellen. Jetzt bin ich sehr verwirrt, mit welchem Servicekonto ich dieses Tool erstellen...