Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
Le "from" n'est pas implicite. Déclares-le.
Hors ligne
Bonjour Fuggerbit,
tu voudrais faire quelle requête en SQL ? Dans la syntaxe SQL le from est obligatoire a priori.
A+, Philippe
Hors ligne
Ok bon... Je vais faire un From alors, j'étais persuadé que ça n'était pas nécessaire...
Hors ligne
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
Hors ligne
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+
Hors ligne
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
Hors ligne
Non Zend_Db_Table n'ajoute pas automatiquement la clause FROM. Test à l'appui :
No table has been specified for the FROM clause
Hors ligne
J'ai retrouvé l'exemple, c'est pas exactement ce que tu cherches, mais je mets quand meme, ca peut servir :
$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
Hello,
Code testé et fonctionnel avec ZF 1.7.2 :
$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+
Hors ligne
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
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
Résolu, pas vraiment car le pb en soi reste 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
Je viens de tomber par hasard sur la doc qui dit :
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)
Hors ligne
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+
Hors ligne
Parfait, j'attends la nouvelle version alors
Hors ligne
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
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+
Hors ligne
Ok, merci mikaelkael
Dernière modification par Fuggerbit (20-01-2009 11:24:08)
Hors ligne
Apparemment non, j'ai toujours l'erreur si je supprime le from dans mon cas. Enfin c'est pas bien grave.
Hors ligne
Pages: 1