Bonjour,

Alors voilà, j'ai fait un query buider qui me récupère bien un tableau avec les bonnes données dedans. Mais au moment de l'afficher, j'ai eu comme erreur: "key for array with keys 0, 1, 2, 3 does not exist"
J'ai tenté comme suggéré sur le net de mettre un 0 comme cela: <td>{{totalLaborCost.0.totalLaborCost}}</td> mais ça ne marche pas. J'ai tenté d'ajouter "length" , ça ne marche pas plus.
A la place du execute(), j'ai tenté un getArrayResult(), un getResult() sans succès non plus.
Du coup, je sèche... J'y suis presque, c'est rageant. Je suis novice et je galère bien! Si quelqu'un a une idée, je prend!
Merci d'avcance à ceux qui prendront le temps de jeter un coup d'oeil.
Edit 1:Au final, niveau visuel, je fini par avoir un truc bizarre: chaque résultat est répété 4 fois (c'est le nombre de ligne que j'ai à la base et il me multiplie tout par ce chiffe) sur une ligne. J'ai tenté de mettre la boucle (totalLaborCost) avant mon autre boucle (intervention) et là ça me fait pareil mais dans la verticale.
Edit2: est -ce que le fait d'avoir fait 2 query builder pour les mettre sur la même page ne serait pas une erreur? Ne faudrait t'il pas que je fasse une requête complète avec tout dedans?

Lilouf

<?php

namespace GestionBundle\Repository;

use GestionBundle\Entity\Intervention;

/**
 * InterventionRepository
 *
 * 
 */
class InterventionRepository extends \Doctrine\ORM\EntityRepository {

    public function findAll() {
        $qb = $this
                ->createQueryBuilder('intervention')
        ;

        return $qb->getQuery()->execute();
    }

    public function totalCostLabor() {

        $qb = $this->createQueryBuilder('i')
                ->select ('intervention.id, (l.laborCost*i.numberHours) AS totalLaborCost')
                ->from(Intervention::class, 'intervention')
                ->innerJoin('i.kindWork', 'k')
                ->innerJoin('k.laborCost', 'l')
                ->groupBy('i.id');
        return $qb->getQuery()->execute();

    }
    }
{% extends 'base.html.twig' %}

{% block body %}

    <div class="container">  

        <h2>{{'Summary table'|trans}}</h2>
        </br>
        {% for intervention in interventions %}
        <select class=form-control>
 <option value=annee>{% if intervention.interventionDate %}{{ intervention.interventionDate|date('Y') }}{% endif %}</option>
 </select>
 {% endfor %}
        </br>
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>{{'Intervention date'|trans}}</th>
                    <th>{{'Week number'|trans}}</th>
                    <th>{{'Technician'|trans}}</th>
                    <th>{{'Trades'|trans}}</th>
                    <th>{{'Type of Intervention'|trans}}</th>
                    <th>{{'Kind Work'|trans}}</th>
                    <th>{{'Group Place'|trans}}</th>
                    <th>{{'Place'|trans}}</th>
                    <th>{{'Number hours'|trans}}</th>
                    <th>{{'Kind labor cost'|trans}}</th>
                    <th>{{'Labor Cost'|trans}}</th> 
                    <th>{{'Material Cost'|trans}}</th>

                    <th>{{'Total labor cost'|trans}}</th>
                    <th>{{'Comments'|trans}}</th>
                </tr>
            </thead>
            <tbody>
                {% for intervention in interventions %}
                    <tr>
                        <td>{% if intervention.interventionDate %}{{ intervention.interventionDate|date('d-m-Y') }}{% endif %}</td>
                        <td>{{ intervention.weekNumber }}</td>
                        <td>{{ intervention.technician }}</td>
                        <td>{{ intervention.technician.trades }}</td>
                        <td>{{ intervention.typeIntervention }}</td>
                        <td>{{ intervention.kindWork }}</td>
                        <td>{{ intervention.places.groupsPlaces }}</td>
                        <td>{{ intervention.places }}</td>
                        <td>{{ intervention.numberHours }}</td>
                        <td>{{ intervention.kindWork.laborCost.kindLaborCost }}</td>
                        <td>{{ intervention.kindWork.laborCost.laborCost }}</td>
                        <td>{{ intervention.materialCost }}</td>
                        {% for totalLaborCost in totalLaborCosts %}
                        <td>{{totalLaborCost.totalLaborCost}}</td>
                        {% endfor %}
                        {# Il aurait été préférable de faire une fonction dans le repertory et via le controller mais pas réussi#}
                        {#<td>{{ intervention.kindWork.laborCost.laborCost * intervention.numberHours}}</td>#}

                        <td>{{ intervention.comments }}</td>
                    </tr>
                {% endfor %}
            </tbody>
        </table>

    </div>
{% endblock %}

La partie du controller qui nous intéresse

public function summaryAction() {
        $em = $this->getDoctrine()->getManager();

        $interventions = $em->getRepository('GestionBundle:Intervention')->findAll();
        $totalLaborCosts = $em->getRepository('GestionBundle:Intervention')->totalCostLabor();
//        dump($totalLaborCost);
        return $this->render('stat/summary.html.twig', ['controller_name' => 'InterventionController',
                    'interventions' => $interventions, 'totalLaborCosts' => $totalLaborCosts]);
    }

1 réponse


Lilouf06
Auteur

Bon au final j'ai tout fait sur un seul query builder et c'est bon! sujet résolu donc!