Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
je me confronte aujourd'hui à un nouveau problème lors de la définition de mes model et modelRow et plus précisemment pour la définition d'une _referenceMap particulière.
En fait dans une table Tbl_emballages, je pose une clé primaire de type "9"
Dans une autres Tbl_statistique, la clé étrangère faisant référence à la table Tbl_emballages et du type "00009"
Je définis donc mon model Tblstatistique.php de la manière suivante :
<?php //création d'un modèle de type table class Tblstatistique extends Zend_Db_Table_Abstract { //référence du nom de la table protected $_name = 'TBL_STATISTIQUE'; //référence de la clé primaire de la table protected $_primary = array('tr_identificateur','tr_date_tr'); //référence vers le modèle de type ligne associé protected $_rowClass = 'TblstatistiqueRow'; protected $_referenceMap = array( 'Tblemballages' => array( //nom de la table associée 'refTableClass' => 'Tblemballages', //colonne de la table associée 'refColumns' => 'em_code', //colonne de la table courante 'columns' => 'tr_code_emb', ), ); }
Mon modelRow TblstatistiqueRow.php est defini comme ça :
<?php //création d'un modèle de type ligne class TblstatistiqueRow extends Zend_Db_Table_Row_Abstract { public function getEmballage() { return $this->findParentRow('Tblemballages'); } } ?>
Cependant le code
echo ' <td>' . utf8_encode($statistique->getEmballage()->em_nom) .'</td>';
ne donne rien
Je travaille sur une bdd MsSQL que je ne peux modifier mais seulement lire.
Comment faire pour que le lien entre les deux tables soit bien pris en compte?
En SQL pur je dois passer par un CAST(tr_code_emb IN int)=em_code pour que le lien soit pris en compte.
Peut-on intégrer le CAST dans la definition des _referenceMap?
J'ai essayé ceci mais ça ne donne rien
'Tblemballages' => array( //nom de la table associée 'refTableClass' => 'Tblemballages', //colonne de la table associée 'refColumns' => 'em_code', //colonne de la table courante 'columns' => 'CAST(tr_code_emb AS int)', ),
Quelqu'un a-t-il une idée ? Merci d'avance ?
Dernière modification par matdev (01-06-2010 16:51:47)
Hors ligne
J'ai palier eau problème en créant directement la requête dans le TblstatistiqueRow
public function getEmballage2() { $dbmssql= Zend_Registry::get('dbmssql'); $query=$dbmssql->query("select * from Tbl_emballages where em_code=cast(".$this->tr_code_emb." as int)"); $result=$query->fetchAll(); return $result[0]; }
Hors ligne
Pages: 1