J'utilise chartjs pour mes graphiques.
Je dois fournir a un graphique de type "line" des donnees :
Le nombre de prospects ventile par mois sur l'annee en cours.
Je dois passer a chartjs 12 arrays comprenant le label (1 ou janvier par exemple) et sa valeur.
Requête:
Code : Tout sélectionner
// START : Chartjs
# Statistic of prospect private investors
$statPrivInvProsp =DB::table('files')
->select(DB::raw('count(*) as total'),DB::raw('MONTH(created_at) as month'))
->whereIn('checked_role_id', [3])
->whereIn('user_status_id', [3,4,5])
->whereBetween('created_at', [ Carbon::now()->startOfYear(), Carbon::now()->endOfYear(),])
->groupBy('month')
->get();
Code : Tout sélectionner
Illuminate\Support\Collection {#1716 ▼
#items: array:2 [▼
0 => {#1750 ▼
+"total": 2
+"month": 1
}
1 => {#1749 ▼
+"total": 1
+"month": 3
}
]
}
Mais sous cette forme, je n'affiche pas les mois ne comprenant pas de données et les mois a venir de l'année.
Étant donné que je souhaite pouvoir afficher tous les mois de l'année (même si aucune valeur n'est retournée car aucune donnée pour le mois en cours ou précédent de l'année existe et pour les mois à venir), j'ai ajouté le code suivant dans une tentative de "construire" les données manquantes :
Code : Tout sélectionner
$datastatPrivInvProsp = $statPrivInvProsp->toArray() + array_fill(1, 12, 0);
Code : Tout sélectionner
array:13 [▼
0 => {#1750 ▼
+"total": 2
+"month": 1
}
1 => {#1749 ▼
+"total": 1
+"month": 3
}
2 => 0
3 => 0
4 => 0
5 => 0
6 => 0
7 => 0
8 => 0
9 => 0
10 => 0
11 => 0
12 => 0
]
Premier problème que je souhaiterais résoudre :
Il faudrait retourner que 12 arrays au maximum.
Second problème :
Je souhaiterais les arrays manquantes (car les données sont inexistantes dans la table pour 10 mois de l'année) sous la forme suivante :
Code : Tout sélectionner
2 => {#1749 ▼
+"total": 0
+"month": 2
}
3 => {#1749 ▼
+"total": 0
+"month": 4
}
4 => {#1749 ▼
+"total": 0
+"month": 5
}
5 => {#1749 ▼
+"total": 0
+"month": 6
}
6 => {#1749 ▼
+"total": 0
+"month": 7
}
7 => {#1749 ▼
+"total": 0
+"month": 8
}
8 => {#1749 ▼
+"total": 0
+"month": 9
}
9 => {#1749 ▼
+"total": 0
+"month": 10
}
10 => {#1749 ▼
+"total": 0
+"month": 11
}
11 => {#1749 ▼
+"total": 0
+"month": 12
}
Marc