Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/03/2007, 22h18   #1
Membre à l'essai
 
Inscription : janvier 2007
Messages : 34
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : janvier 2007
Messages : 34
Points : 22
Points : 22
Par défaut Tuto d'Akrabat ne fonctionne pas avec une autre table dans une autre base de donnees

Si je crée une table "regions" dans la base de données existante "zftest" du tuto d'Akrabat, je ne peux pas appeler cette table

Code :
1
2
3
<?php foreach($this->regions as $regions) : ?>
Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/zf-tutorial/application/
views/indexIndex.tpl.php on line 10
et réciproquement
dans une nouvelle base de données qui contient déja une table "regions" j'ai la même erreur si j'y crée une table "album" et que j'essaye de l' appeler !

Dans cette nouvelle base de données (alors que cela ne marche pas pour la table "album") je peux par contre appeler sans problème la table "regions".
Mais ce n'est pas parfait non plus car cela ne fonctionne qu'avec le premier champ 'id'. Le second champ 'regionlib' me renvoie une erreur
Code :
1
2
3
4
5
6

<?php foreach($this->regions as $regions) : ?>
<tr>
	<td><?php echo $this->escape($regions->regionlib);?></td>
Fatal error: Uncaught exception 'Zend_Db_Table_Row_Exception' with message 
'column 'regionlib' not in row' in /Applications/MAMP/htdocs/library08/Zend/Db/Table/Row.php:97 Stack tr 
la table region est la suivante :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `regions` (
  `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  `regionlib` varchar(15) NOT NULL,
  `paysid` tinyint(4) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
 
INSERT INTO `regions` VALUES (1, 'North', 1);
INSERT INTO `regions` VALUES (2, 'North East', 1);
INSERT INTO `regions` VALUES (4, 'South', 1);
INSERT INTO `regions` VALUES (3, 'Central', 1);
INSERT INTO `regions` VALUES (6, 'East', 1);
la table album est la suivante :
Code sql :
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `album` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `artist` varchar(100) NOT NULL,
  `title` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `artist` (`artist`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
 
 
INSERT INTO `album` VALUES (6, 'qweeree', 'tytyt');
INSERT INTO `album` VALUES (7, 'wghggh', 'ggg');


Y a-t-il quelqu'un qui a le tuto d'Akrabat et qui pourrait essayer pour voir s'il a le problème ?

Eric
Ericx_25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2007, 22h50   #2
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Quels sont les noms réels des champs dans ta table ? Il y a une transformation automatique undercase/camelcase qui est opérée par Zend_DB
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 14h52   #3
Membre à l'essai
 
Inscription : janvier 2007
Messages : 34
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : janvier 2007
Messages : 34
Points : 22
Points : 22
J'ai mis à jour mon post ci-dessus
Ericx_25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 16h00   #4
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Etrange car ton code ne semble pas concerné par des bugs connus (http://framework.zend.com/issues/browse/ZF-50 , http://framework.zend.com/issues/browse/ZF-445) relatifs aux transformations camelcase.

Ceci fonctionne chez moi avec exactement les même tables et données:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
require_once 'Zend/Db.php';
require_once 'Zend/Db/Table.php';
$params = array (
  'host'     => '..',
  'username' => '..',
  'password' => '..',
  'dbname'   => 'zftest'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
Zend_Db_Table::setDefaultAdapter($db);
 
class Regions extends Zend_Db_Table {}
echo '<pre>';
$rtable = new Regions();
$regions = $rtable->fetchAll();
foreach ($regions as $region) {
  echo $region->id."\n";
  echo $region->regionlib."\n";
  echo $region->paysid."\n";
}
print_r($regions);
Que t'indique un print_r($regions) ou print_r($rtable), plus particulièrement l'attribut protected _cols de l'objet Regions ?
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 20h32   #5
Membre à l'essai
 
Inscription : janvier 2007
Messages : 34
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : janvier 2007
Messages : 34
Points : 22
Points : 22
merci pour ta réponse , c'est en voyant ton code que j'ai compris mon erreur
au niveau de
Code :
$regions = $rtable->fetchAll();
Ericx_25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h09.


 
 
 
 
Partenaires

Hébergement Web