Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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):
/** * 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 :
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) :
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) :
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)
Hors ligne
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
Bonjour,
Suite à ton conseil j'ai en effet fait une jointure que voici :
$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
Hors ligne