从数组设置标签

时间:2019-04-05 13:20:59

标签: symfony twig chart.js

我从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”的数组的键“名称”不存在。

谢谢!

2 个答案:

答案 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}},

我不知道这是否是正确的方法,但是它行得通,如果您有更好的主意,我会接受;)