Hello,

Dans mon projet d'alternance, j'ai une table qui contient notamment, des valeurs calculées:

  • 1 stock maximum d'un magasin

  • 1 champs créée à partir de la concaténation d'autres champs

Et des champs simples, notamment :

  • Identifiant du magasin

En gros, le champs "maxStockGaucher" est le champs qui va contenir la valeur la plus haute (Max) du magasin .

Le champs "countStockGaucher" est lui un champs qui sert à trouver la valeur maximum de "maxStockGaucher".

Ce que je veux faire, c'est surcharger l'entité pour qu'à chaque ajout/modification, le champs "maxStockGaucher" ait la valeur max , uniquement du magasin.

Par exemple, si le magasin A possède 3 produits dont le champs "countStockGaucher" est à 5, les 3 lignes concernant le magasin A prennent la valeur 5.

Si le magasin B, lui a 4 produits dont le champs "countStockGaucher" est à 2, les 4 lignes concernant le magasin B prennent la valeur 4.

Je partais sur une idée comme cela et voulais savoir si c'était possible.

public function setmaxStockGaucher(int $storeId)
{
    foreach ($products as $value) {
        if ($storeId = $storeId) {
            return $this->maxStockGaucher = max($this->countStockGaucher);
        }
    }
}

J'avais regardé du côté des PROCEDURES et des TRIGGERS mais ca n'a pas l'air d'être les solutions adaptées car:

  • Un trigger ne peut pas être déclenchée sur la table qui a a lancé le trigger

  • Une procédure doit être appelée et n'est donc pas automatique

D'avance merci :)

1 réponse


Salut,

je ne suis pas certain de bien comprendre comment tu veux faire ton calcul (ni ce que tu veux calculer).

Je vois d'abord plusieurs problèmes dans ta méthode :

  • dans ton if, tu ne fais pas une comparaison mais une assignation donc la condition sera toujours vraie,
  • ensuite, tu passes un argument à ta méthode qui est utilisé pour une comparaison avec lui même donc ce sera toujours vrai quand même,
    • tu n'utilise ni $storeId, ni $value, donc je ne vois pas trop à quoi sert la boucle.

Gillesr