Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
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 02/11/2011, 08h56   #1
ldv
Invité régulier
 
Inscription : avril 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 19
Points : 6
Points : 6
Par défaut Comment exécuter une requête SQL directement ?

Bonjour,

Je dois exécuter une requête d'optimisation de la base de données.

J'ai développé une commande que je teste par app/console <nom de la commande>.

Or, comment faire pour exécuter une simple requête SQL (donc sans passer par les répositories ou autres) ?

Merci.
ldv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 15h28   #2
ldv
Invité régulier
 
Inscription : avril 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 19
Points : 6
Points : 6
J'ai fait ceci :

Code :
1
2
3
4
5
6
7
8
$em = $this->getContainer()->get('doctrine.orm.entity_manager');
 
// Optimization query with all tables for the database
$query = "OPTIMIZE TABLE ... ";
 
$result = $em->createQuery($query)->execute();
 
$em->flush();

Mais cette requête ne s'exécute pas.
L'ordre SQL est correct.

Comment exécuter cette requête ?
ldv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 15h50   #3
Membre régulier
 
Guillaume M.
Inscription : décembre 2010
Messages : 60
Détails du profil
Informations personnelles :
Nom : Guillaume M.

Informations forums :
Inscription : décembre 2010
Messages : 60
Points : 83
Points : 83
Comme ca :
Code :
1
2
3
 
$con = Doctrine_Manager::getInstance()->connection();
$con->execute("REQUETE_SQL");
gmarsay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 10h08   #4
ldv
Invité régulier
 
Inscription : avril 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 19
Points : 6
Points : 6
Cela ne fonctionne pas.

La méthode "execute" n'est pas définie.
ldv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 10h36   #5
ldv
Invité régulier
 
Inscription : avril 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 19
Points : 6
Points : 6
Ayez, cela fonctionne.

Explications.

On est allé chercher le service de connection.

Pour trouver ce service, on est allé dans les containers, partie services.
On accède à :
"Container Services:"
à partir de la barre de debug située en bas de l'écran lorsque l'on est en développement.

Ensuite, on met ce code dans le programme :
"
// Add this service to connect to database
// Le plus souvent, il faut mettre ce service mais attention, le nom peut être différent. Donc bien prendre le nom du service que vous voyez à l'écran.
$conn = $this->getContainer()->get('doctrine.dbal.default_connection');

// Query ...
$query = "...";

$result = $conn->executeQuery($query);
"

voili, voilà.

En espérant avoir aidé
ldv est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h41.


 
 
 
 
Partenaires

Hébergement Web