Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-04-2009 15:37:15

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Ajout variable modele mais pas dans base

Bonjour,

J'ai un petit problème qui je suis sur sera très simple à résoudre pour vous

Voilà, je travaille en MVC et j'aimerai ajouter un attribut dans mon modèle :

J'ai une classe Emplacement qui fait référence à une table emplacement dans ma base
De cette classe héritent 2 autres classes/tables

Le schema relationnel est le suivant :

emplacement(#numero)
emplacementLouable(#numero)
emplacementNonLouable(#numero)

Vous l'aurez deviné, je cherche à savoir le type de mes emplacements.

Pour cela j'ai fait la méthode suivante (se trouvant dans mon modèle):

Code:

    /**
     * Trouve le type de l'emplacement
     * @param $empl une instance demplacement louable
     * @param $empnl une instance demplacement non louable
     * @return true si c'est un emp louable, false sinon
     */
  public function getType(EmplacementLouable $empl,EmplacementNonLouable $empnl)
  {
      
      $num=$this->numero;
      
      $em=$empl->find($num);
      if($em->current()==false)
      {
          
          return true;
      }
      else 
      {
          $emm=$empnl->find($num);
          if($emm->current()==false)
          {
              return false;
          }
      }
      
  }

Je peux donc récupérer le type en faisant :

Code:

monEmplacement->getType(.....)

Seulement je n'aimerais pas faire ca dans ma vue, car cela voudrait dire qu'il faudrait que je fasse des instances de EmplacementLouable et EmplacementNonLouable  dans la vue...or, cela ne conviendrait pas pour un modèle MVC.

De ce fait, je souhaiterais savoir si il était possible de rajouter des attributs qui ne font pas partie de la table dans la classe modèle de sorte à avoir (dans le controlleur) :

Code:

foreach($emplacements as $emp)
{
$letype=$emp->getType(.......);
$emp->type=$letype // parametre type qui fait partie du modèle mais pas dans la table
}

pour pouvoir simplement faire ensuite(dans la vue) :

Code:

echo $emp->type

j'espère avoir été clair dans mes explications.

par avance je vous remercie

Dernière modification par gostbuster (29-04-2009 15:37:57)


Gostbuster - Développeur WEB

Hors ligne

 

#2 29-04-2009 17:05:41

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Ajout variable modele mais pas dans base

pour optimiser un peu tu devrais utiliser une requête JOIN, parce qu'un simple SELECT dans une boucle foreach peut devenir gourmand.

Hors ligne

 

#3 30-04-2009 14:00:17

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: Ajout variable modele mais pas dans base

Bonjour,

Suite à ton conseil j'ai en effet fait une jointure que voici :

Code:

        $select->from(array("e" => "emplacement"),array('numero','posx','posy'))
                    ->joinInner(array("el" => "emplacementlouable"), "e.numero = el.numero",'')

Cependant, je selectionne qu'une partie des "héritiés" de la classe mère(emplacement).

Je me demande alors comment faire pour sélectionner tous les héritiers (emp louable et non louable) en un seul select (et bien sur être capable de les distinguer...)

il existe pas un attribut genre type_of ou table_name, dans sql?

merci


Gostbuster - Développeur WEB

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages