Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-01-2009 18:24:36

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

[Résolu][ZEND-DB 1.7] Faire une jointure sans from

bonjour,
J'essaye de faire une jointure sans avoir à refournir le 'from' de ma requête :

$paramMagasin = new ParamMagasin();
$select = $paramMagasin->select(); //Le from devrait être implicite ici, non?
$select->joinLeftUsing('MAGASIN', 'COD_MAGASIN', array('GRP_MAG', 'LIB_PAYS', 'ZONE', 'NOM_MAG'));

$this->view->paramMagasin = $paramMagasin->fetchAll($select,'COD_MAGASIN');

Ceci n'est il pas possible?

J'obtiens l'erreur suivante :
Fatal error: Uncaught exception 'Zend_Db_Select_Exception' with message 'You can only perform a joinUsing after specifying a FROM table

Avez vous une solution?
Merci

Dernière modification par Fuggerbit (08-01-2009 10:09:38)

Hors ligne

 

#2 06-01-2009 21:22:35

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Le "from" n'est pas implicite. Déclares-le.

Hors ligne

 

#3 06-01-2009 21:39:52

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Bonjour Fuggerbit,

tu voudrais faire quelle requête en SQL ? Dans la syntaxe SQL le from est obligatoire a priori.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 07-01-2009 17:03:30

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Ok bon... Je vais faire un From alors, j'étais persuadé que ça n'était pas nécessaire...

Hors ligne

 

#5 07-01-2009 17:16:29

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Il me semble aussi avoir deja lu que le from n'etant pas obligatoire, quand tu pars d'un modele qui herite de Zend_Db_Table_Abstract .
J'ai pas l'exemple sous la main, si je le retrouve je te le mets smile

Hors ligne

 

#6 07-01-2009 17:50:30

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Hello,

Il est obligatoire si tu veux réaliser un join mais effectivement si tu ne requêtes que sur la table courante le from est facultatif.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#7 07-01-2009 18:21:36

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Hum... au temps pour moi, j'avais pas pensé que ParamMagasin était un Zend_Db_Table... je pensais que c'était un $select de base. En SQL le FROM est obligatoire, mais c'est possible que Zend_Db_Table l'ajoute automatiquement, j'en sais rien...

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#8 07-01-2009 18:37:30

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Non Zend_Db_Table n'ajoute pas automatiquement la clause FROM. Test à l'appui :

Code:

No table has been specified for the FROM clause

Hors ligne

 

#9 07-01-2009 22:13:12

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

J'ai retrouvé l'exemple, c'est pas exactement ce que tu cherches, mais je mets quand meme, ca peut servir :

Code:

$oUsers = new Users();
$select = $oUsers->select()->from($oUsers);

Bon tu specifies pas explicitement la table, mais je crois pas que tu puisses avoir mieux, a moins d'etendre la class ...

Hors ligne

 

#10 08-01-2009 09:28:07

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Hello,

Code testé et fonctionnel avec ZF 1.7.2 :

Code:

$table = new Ma_Table();
$row1 = $table->fetchRow($table->select());
// est équivalent à (et fonctionne tout aussi bien)
$row2 = $table->fetchRow($table->select()->from($table));

Donc non, la clause FROM n'est pas obligatoire DANS LE CAS d'une requête sur la table courante. Si toutefois, vous souhaitez faire un JOIN avec une autre table, alors la clause from() est obligatoire.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#11 08-01-2009 09:54:30

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

C'est en effet uniquement si on veut faire une jointure. Donc je dois écrire :

$select = $table->select();
$select->from($table);
$select->join(...);
à chaque fois.

Dernière modification par Fuggerbit (08-01-2009 09:56:48)

Hors ligne

 

#12 08-01-2009 10:01:27

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Le sujet est donc résolu?

PS: Ca s'écrit aussi comme ça:

Code:

$select = $table->select()
    ->from($table)
    ->join(...);

Hors ligne

 

#13 08-01-2009 10:07:02

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Mr.MoOx a écrit:

Le sujet est donc résolu?

PS: Ca s'écrit aussi comme ça:

Code:

$select = $table->select()
    ->from($table)
    ->join(...);

Oui je sais wink
Résolu, pas vraiment car le pb en soi reste tongue mais je vais le passer en résolu, car la solution n'existe pas.
Merci

Dernière modification par Fuggerbit (08-01-2009 10:08:23)

Hors ligne

 

#14 13-01-2009 10:45:06

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Je viens de tomber par hasard sur la doc qui dit :

Code:

Example 13.99. Using a lookup table to refine the results of fetchAll()


$table = new Bugs();

$select = $table->select();
$select->where('bug_status = ?', 'NEW')
       ->join('accounts', 'accounts.account_name = bugs.reported_by')
       ->where('accounts.account_name = ?', 'Bob');

$rows = $table->fetchAll($select);

Dernière modification par yannux (13-01-2009 10:45:50)


Société : Direct Info Service

Hors ligne

 

#15 13-01-2009 11:17:23

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Hello,

Il y a eu un patch la semaine dernière qui correspond, je pense, à ce besoin. Ce sera pour la 1.8. Dès que je retrouve l'issue et le commit, je vous les transmets.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#16 13-01-2009 11:52:40

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Parfait, j'attends la nouvelle version alors tongue

Hors ligne

 

#17 20-01-2009 11:02:34

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

mikaelkael a écrit:

Hello,

Il y a eu un patch la semaine dernière qui correspond, je pense, à ce besoin. Ce sera pour la 1.8. Dès que je retrouve l'issue et le commit, je vous les transmets.

A+

Cela a-t-il été inclus dans la version 1.7.3 sortie hier?
Merci

Hors ligne

 

#18 20-01-2009 11:12:09

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Hello,

Apparemment ce serait dans la 1.7.3 (http://framework.zend.com/issues/browse … sion/10250)

Il s'agit de l'issue ZF-3239 (http://framework.zend.com/issues/browse/ZF-3239)

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#19 20-01-2009 11:23:47

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Ok, merci mikaelkael wink

Dernière modification par Fuggerbit (20-01-2009 11:24:08)

Hors ligne

 

#20 20-01-2009 11:40:45

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][ZEND-DB 1.7] Faire une jointure sans from

Apparemment non, j'ai toujours l'erreur si je supprime le from dans mon cas. Enfin c'est pas bien grave.

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