Bonjour la communauté !
Je tombe sur un os, puisqu'un bug apparait uniquement sur mon site en ligne, mais pas sur mon site en version locale (via wampserveur) !
Je cherche tout simplement à faire une petite requete de statistique :
Mon controller :
public function statistiques() {
$query = $this->Articles->find();
$query->contain(['Choixprix', 'Choixstyles','Choixcategories']);
$query->select(['choixcategories.categorie','choixcategories.id', 'choixstyles.style', 'choixstyles.id', 'choixprix.prix', 'choixprix.id' ,'total_articles' => $query->func()->count('Articles.id')])
->group(['choixcategorie_id', 'choixstyle_id', 'choixprix_id']);
$this->set('tableaustat', $query);
}
et mon layout :
<table class='table table-sm'>
<tr>
<th class="text-center">Catégorie</th>
<th class="text-center">Style</th>
<th class="text-center">Prix</th>
<th class="text-center">Nombre</th>
</tr>
<?php foreach ($tableaustat as $stat): ?>
<!-- <?php debug($stat); ?> -->
<tr>
<td class="text-center"><?= $stat->choixcategories['categorie']; ?></td>
<td class="text-center"><?= $stat->choixstyles['style']; ?></td>
<td class="text-center"><?= $stat->choixprix['prix']; ?></td>
<td class="text-center"><?= $this->Html->link($stat->total_articles, array('controller'=>'Articles','action'=>'index','?' => ['cat' => $stat->choixcategories['id'], 'style' => $stat->choixstyles['id'], 'prix' => $stat->choixprix['id']])); ?></td>
</tr>
<?php endforeach; ?>
</table>
et donc le bug sur mon serveur de prod : Il n'arrive pas à trouver de champ 'choixcategories' !
Mes 2 bases de données sont pourtant identiques (coté serveur et coté locale)
Avez vous une idée ?
Raphaël
Effectivement, c'était bien ça : je n'ai pas le droit d'utiliser select pour choisir les champs des tables associées...
Du coup, j'ai mis ça :
$query->contain([
'Choixprix' => ['fields' => ['Choixprix.id', 'Choixprix.prix']],
'Choixstyles' => ['fields' => ['Choixstyles.id', 'Choixstyles.style']],
'Choixcategories' => ['fields' => ['Choixcategories.id', 'Choixcategories.categorie']]]);
$query->select(['total_articles' => $query->func()->count('Articles.id')])
->group(['choixcategorie_id', 'choixstyle_id', 'choixprix_id']);
et ça marche !
J'ai l'impression que le bug vient de la ligne suivante :
$query->select(['choixcategories.categorie','choixcategories.id', 'choixstyles.style', 'choixstyles.id', 'choixprix.prix', 'choixprix.id' ,'total_articles' => $query->func()->count('Articles.id')])
->group(['choixcategorie_id', 'choixstyle_id', 'choixprix_id']);
Je n'ai à priori pas le droit d'utiliser 'select' pour les champs de mes tables jointes : 'choixcategories.categorie','choixcategories.id', 'choixstyles.style'
Quelqu'un à une idée comment faire ?