Totally possible.
Just to clarify 'biggest number of players' means the player with highest points ?
If so, you can just get the data and store it like :
$players = getPlayersRecordFromApi();
foreach ($players as $player) {
GameData::create([
'player_id' => $player->id,
'points' => $player->points
]);
}
You can then retrieve datewise data as eloquent creates timestamps for you.
mcraz said:
Totally possible.
Just to clarify 'biggest number of players' means the player with highest points ?
If so, you can just get the data and store it like :
$players = getPlayersRecordFromApi(); foreach ($players as $player) { GameData::create([ 'player_id' => $player->id, 'points' => $player->points ]); } You can then retrieve datewise data as eloquent creates timestamps for you.
I do not see how it gets the highest number of players. Please note that the api is a live one, and gets me the number of players right now.
Create a table for daily maximum online users. Let's say its fields are id,user_count and count_date. Make count_date unique. user_count is for maximum online users count and count_date is for active day. Use your api and get number of online users periodically. Every five minutes, for example. You can use cron or similar service for this. Same time, check user_count by day, compare with newly fetched user count via api with old data. (You can use firstOrCreate for new day if it doesn't exist yet) If new data is bigger than old data, update record with new data. Only thing makes it complicated is my english, it is quite easy task actually.
Seems like I misunderstood your question.
So, you are trying to keep a daily record of max players on the day.
Call updatePlayerCount()
via cron every x
minutes and it will do all your job !
public function updatePlayerCount()
{
# ====================================================================
# 1. Get number of players online now from api.
# ====================================================================
$live_count = getLivePlayerCountFromApi();
# ====================================================================
# 2. We will check if we have created a record today or not.
# ====================================================================
$data = GameData::whereRaw('DATE(created_at) = DATE(NOW())')->first();
// If we already have a record from today, check & update if needed.
if ( ! is_null( $data ) ) {
// Check if live count us greater
if ( $data->count < $live_count ) {
$data->count = $live_count;
$data->save();
}
// If count is just updated the count or it was less, exit.
return;
}
# ====================================================================
# 3. If we reach this portion of the code, it means we don't have a previous
# record for today. Let's create a new one.
# ====================================================================
GameData::create(
'count' => $live_count,
);
// Task completed. Exit
return;
}
Sign in to participate in this thread!
The Laravel portal for problem solving, knowledge sharing and community building.
The community