Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > ORM > Doctrine
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 10/02/2011, 11h07   #1
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 3
Points : 3
Par défaut update matable set monchamp=monchamp+1

Comment traduire cette requete?
J'ai essaye des trucs du type:

Code :
1
2
3
4
5
6
$q = Doctrine_Query::create()
			->update('matable')
			->set('monchamp', new Doctrine_Expression('monchamp+1'))
			->where('reference = ?', $reference);
		echo $q->getSqlQuery();
		$updated = $q->execute();
Rien à faire ca marche pas.
Quelqu'un peut-il m'aider?

David
dquintard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h24   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Et un truc comme :
Code :
1
2
3
4
5
 
$q = Doctrine_Query::create()
	->update('matable')
	->set('monchamp', 'nomchamp +1')
	->where('reference = ?', $reference);
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h42   #3
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 3
Points : 3
Oui bien sur j'ai déjà testé ca avant de passer a Doctrine_Expression.
Mais ca ne fonctionne pas.
dquintard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 16h38   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Quel est le nom du champ dans la définition de la base ? est-ce pour un exemple comme celui-ci "monchamp" ou plutôt "mon_champ" ? vu que nous ne sommes plus en DQL dans le corps de la méthode set, il convient d'utiliser le nom SQL du champ.

Regarde le code SQL généré par la requête et compare le à ce que tu veux, tu devrais rapidement trouver une piste pour l'obtenir.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 16h59   #5
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 3
Points : 3
Il n'y a pas d'ambiguite, le nom du champ est de toutes manieres dans mon cas egal a la definition dql à savoir aucune majuscule ni _ ni -. Le vrai nom est 'counter'.
As tu déjà réussi a exécuter une telle requete d'update et si oui avec quelle syntaxe?

David
dquintard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 17h02   #6
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 3
Points : 3
Code :
1
2
3
4
5
6
7
8
9
10
$this->hasColumn('counter', 'integer', 2, array(
             'type' => 'integer',
             'length' => 2,
             'fixed' => false,
             'unsigned' => true,
             'primary' => false,
             'default' => '1',
             'notnull' => true,
             'autoincrement' => false,
             ));
dquintard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 17h32   #7
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
J'utilise doctrine dans symfony.

J'ai bien joué au départ quant je suis passé de propel à doctrine. Et j'ai joué avec des set globaux et des delete. Mais avec symfony, tu as plutôt tendance à récupérer l'enregistrement, le modifier et le sauvegarder. Donc tu ne fais pas de update directement, c'est doctrine qui s'en charge.

Par contre, je suis presque sur de ma syntaxe.

Quel est le SQL généré par doctrine ?

Quel est la version de Doctrine que tu utilises ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h43.


 
 
 
 
Partenaires

Hébergement Web