Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
j'ai crée une classe "modele" mais je n'arrive pas à faire ma clé primaire composé .
ce doit être untableau mais :
*
* @package application
* @subpackage models
*/
class TPropalmodele extends Zend_Db_Table_Abstract
{
/**
* Nom de la table
*
* @var string
*/
protected $_name = 'propalmodele';
/**
* Nom de la clé primaire
*
* @var string
*/
protected $_primary = array('idpropal','idmodele');
/**
puis dans mon controlleur :
$propalmodele = $this->_propalmodeleTable->find((int)$params['r'],(int)$params['m'])->current();
la clé n'est pas reconue !!
cordialement
manu
Dernière modification par manu32320 (16-05-2009 19:10:06)
Hors ligne
$propalmodele = $this->_propalmodeleTable->find(array('idpropal' => $params['r'], 'idmodele' => $params['m']))->current();
Hors ligne
Merci pour le code mais marche pas j'ai fais copier coller :
code :
$propalmodele = $this->_propalmodeleTable->find(array('idpropal'=>$params['r'], 'idmodele' =>$params['m']))->current();
le message d'erreur :
exception 'Zend_Db_Table_Exception' with message 'Too few columns for the primary key' in C:\wamp\www\library\Zend\Db\Table\Abstract.php:1074
je remets mon modèle au cas où :
class TPropalmodele extends Zend_Db_Table_Abstract
{
/**
* Nom de la table
*
* @var string
*/
protected $_name = 'propalmodele';
/**
* Nom de la clé primaire
*
* @var string
*/
protected $_primary = array('idpropal','idmodele');
/**
voila je bloque complètement juste une clé c'est .... gardons le sourrire.
j'ai un peu de pressions
Hors ligne
bon et que dit la doc ?
A+jyt
Hors ligne
ben voila :
15.5.2.2. Définir la clé primaire d'une table
Toute table doit posséder une clé primaire. Zend_Db_Table ne fonctionne pas avec les tables sans clé primaire. Vous pouvez les déclarer la(les) colonne servant de clé primaire grâce à la propriété protégée de la classe $_primary. Celle-ci peut être soit une chaîne, dans le cas d'une clé sur une colonne, ou un tableau de chaînes pour une clé sur plusieurs colonnes (clé primaire composée).
oups !... je tente quelque chose de suite . mes champs étant des integers j'ai casté mais la doc parle de chaînes je suis sur cette doc
depuis hiers !!
Hors ligne
Ben c'est pareil ...je cherche autre piste mais voie pas .
Hors ligne
manu32320 a écrit:
ben voila :
15.5.2.2. Définir la clé primaire d'une table
Toute table doit posséder une clé primaire. Zend_Db_Table ne fonctionne pas avec les tables sans clé primaire. Vous pouvez les déclarer la(les) colonne servant de clé primaire grâce à la propriété protégée de la classe $_primary. Celle-ci peut être soit une chaîne, dans le cas d'une clé sur une colonne, ou un tableau de chaînes pour une clé sur plusieurs colonnes (clé primaire composée).
oups !... je tente quelque chose de suite . mes champs étant des integers j'ai casté mais la doc parle de chaînes je suis sur cette doc
depuis hiers !!
Cela montre que : protected $_primary = array('idpropal','idmodele'); est bien écrit.
Je pense que sekaijin te demandais de regarder la doc du côté de find() : http://framework.zend.com/manual/fr/zen … table.find
Je dirais donc d'après la doc :
$propalmodele = $this->_propalmodeleTable->find(array($params['r'], $params['m']))->current();
A+
Dernière modification par mikaelkael (16-05-2009 10:00:02)
Hors ligne
Bien j'avais regardé aussi du coté de find(), sans plus de précision ; j'ai enfin trouvé !
je mets la réponse pour d'autre :
dans le modèle la clé est correcte. la méthode find n'admet pas de tableau ...j'ai donc crée des variables intermediaires
$un = $params['r']; et $deux = $params['m']; puis le find($un, $deux) => ça marche .
il y a peut etre mieux ...je recreuserais plus tard.
merci à tous.
manu
Hors ligne
Hello,
Ah oui tiens c'étais l'exemple d'en dessous : http://framework.zend.com/manual/fr/zen … e-compound
Désolé de t'avoir mis dans l'erreur.
A+
Hors ligne