Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-05-2010 16:13:46

matdev
Membre
Date d'inscription: 31-03-2009
Messages: 172

[Resolu] Définition d'un _referenceMap qui pose problème

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 :

Code:

<?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 :

Code:

<?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

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

Code:

'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

 

#2 01-06-2010 16:51:28

matdev
Membre
Date d'inscription: 31-03-2009
Messages: 172

Re: [Resolu] Définition d'un _referenceMap qui pose problème

J'ai palier eau problème en créant directement la requête dans le TblstatistiqueRow

Code:

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

 

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