我从chartjs开始,我已经在挣扎。我想用从查询中获得的数据设置标签:
public function find4Chart($joueur){
$qb = $this->createQueryBuilder('p');
$qb->join('p.partie','y')
->join('y.game','g')
->select('g.name')
->addSelect('COUNT(p) AS sumParties')
->where('p.joueur = :joueur')
->setParameter('joueur', $joueur)
->groupBY('g.name');
$query = $qb->getQuery();
return $query->getResult();
}
然后我像这样设置图表:
var ctx = document.getElementById('myChart');
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: [{{ chart.name }}],
但是它给了我以下错误,我不知道为什么在这里或做什么:/
具有键“ 0、1”的数组的键“名称”不存在。
谢谢!
答案 0 :(得分:1)
关于您自己的答案-您可以更改此部分:
$arrChart = array();
foreach($chart as $c){
$name = $c['name'];
array_push($arrChart, $name);
}
对此:
$arrChart = array_column($chart, 'name');
您可以了解有关array_column
here
答案 1 :(得分:0)
好的,它对我有用:
public function show(Joueur $joueur): Response
{
$em = $this->getDoctrine()->getManager();
$chart = $em->getRepository(Played::class)->find4Chart($joueur);
$arrChart = array();
foreach($chart as $c){
$name = $c['name'];
array_push($arrChart, $name);
}
return $this->render('joueur/show.html.twig', [
'joueur' => $joueur,
'chart' => $arrChart,
]);
}
图表:
var ctx = document.getElementById('myChart');
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: {{chart | json_encode | raw}},
我不知道这是否是正确的方法,但是它行得通,如果您有更好的主意,我会接受;)