CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 05-12-2015 12:06:19

rescue
Pitivier
Date d'inscription: 05-12-2015
Messages: 15

[RESOLU] Traduire une requete sql en cakephp

Bonjour,

Problème de débutant en CakePHP-3:

Je voudrais faire un requête SQL permettant d'afficher la liste de client par rapport à une spécialité avec une date de fin d'activité égale à 0000-00-00 (date de ma base de données).

Comment réaliser cette requête s'il vous plait ?

Code: php

  1. SELECT * FROM `clients` WHERE `fin_activite`='0000-00-00'

Dans le controller spécialité généré par bake :

Code: php

  1. public function view($id = null)
  2.     {   
  3.         $specialite = $this->Specialites->get($id, [
  4.             'contain' => ['Clients'],
  5.         ]);
  6.        
  7.         $this->set('specialite', $specialite);
  8.         $this->set('_serialize', ['specialite']);
  9.     }

Merci car je galère dessus depuis plusieurs jours.

Dernière modification par rescue (05-12-2015 15:23:20)

Hors ligne

 

#2 06-12-2015 12:41:59

6120
The Big Cake
Date d'inscription: 06-11-2009
Messages: 382

Re: [RESOLU] Traduire une requete sql en cakephp

tu aurais, je pense, besoin de relire les tutoriels du cookbook :-;

Code: php

  1. public function view($id = null)
  2.     {  
  3.         $specialite = $this->Specialites->get($id, [
  4.             'contain' => ['Clients'],
  5.             'conditions' => ['Specialites.fin_activite <' => '0000-00-00']
  6.         ]);
  7.        
  8.         $this->set('specialite', $specialite);
  9.         $this->set('_serialize', ['specialite']);
  10.     }

avec bien sûr les bons "hasMany" et "belongsTo"

Hors ligne

 

#3 06-12-2015 13:51:46

rescue
Pitivier
Date d'inscription: 05-12-2015
Messages: 15

Re: [RESOLU] Traduire une requete sql en cakephp

Bonjour,

Merci pour ta réponse mais malheureusement ça ne fonctionne pas.
Cette condition je l'avais déjà testé.

Voici une partie de mon fichier SpecialitesTable.php  :

Code: php

  1. public function initialize(array $config)
  2.     {
  3.         parent::initialize($config);
  4.  
  5.         $this->table('specialites');
  6.         $this->displayField('nom_specialite');
  7.         $this->primaryKey('id');
  8.  
  9.         $this->hasMany('Clients', [
  10.             'foreignKey' => 'specialite_id'
  11.         ]);
  12.     }

Voici une partie de mon fichier ClientsTable.php

Code: php

  1. public function initialize(array $config)
  2.     {
  3.         parent::initialize($config);
  4.  
  5.         $this->table('clients');
  6.         $this->displayField('id');
  7.         $this->primaryKey('id');
  8.  
  9.         $this->belongsTo('Specialites', [
  10.             'foreignKey' => 'specialite_id',
  11.             'joinType' => 'INNER'
  12.         ]);
  13.     }

Pour le tutoriel Cookbook je l'ai dans mes favoris. smile

Si tu as une autre idée je suis preneur car je trouve pas mal ce petit Framework CakePHP.
Sinon je vais devoir rester encore sur du procédurale.
J'avance pas du tout j'ai l"impression de reprendre tous à zéro en PHP avec ce framework.

Merci pour votre aide.
@+

Hors ligne

 

#4 07-12-2015 06:54:38

6120
The Big Cake
Date d'inscription: 06-11-2009
Messages: 382

Re: [RESOLU] Traduire une requete sql en cakephp

Enlève moi un doute : ta date c'est vraiment 0000-00-00 ?

Hors ligne

 

#5 07-12-2015 13:01:06

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: [RESOLU] Traduire une requete sql en cakephp

Salut,
la condition ne peut pas être positionné sur specialites, car il me semble que fin_activite est dans la table clients, ca donnerait donc plutôt :

Code: php

  1.    public function view($id = null)
  2.         {  
  3.             $specialite = $this->Specialites->get($id, [
  4.                 'contain' => ['Clients'],
  5.                 'conditions' => ['Clients.fin_activite' => '0000-00-00']
  6.             ]);
  7.            
  8.             $this->set('specialite', $specialite);
  9.             $this->set('_serialize', ['specialite']);
  10.         }

Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

#6 07-12-2015 20:49:51

rescue
Pitivier
Date d'inscription: 05-12-2015
Messages: 15

Re: [RESOLU] Traduire une requete sql en cakephp

Bonsoir,

Merci pour vos réponses.

@ cyberbobjr :
J'ai vu l'erreur de 6120 le champ fin_activite je l'avais bien positionné sur Clients.
Comme ça ne fonctionne toujours pas voici l'erreur produite si cela peut vous éclairer pour m'aider.

Code: php

  1. Column not found: 1054 Unknown column 'Clients.fin_activite' in 'where clause'

La table Clients existe bien et le champ fin_activite également !

@6120 :
Oui c'est le champ date dans ma table Clients.

Ce que je veux afficher dans ma vue ce sont tous les clients qui n'ont pas cessé leurs activités.

Merci.

Dernière modification par rescue (07-12-2015 20:54:40)

Hors ligne

 

#7 08-12-2015 09:20:04

6120
The Big Cake
Date d'inscription: 06-11-2009
Messages: 382

Re: [RESOLU] Traduire une requete sql en cakephp

Ma question était pour savoir si ton champs était vraiment à zéro car ce n'est pas une date valide.
Mais le problème ne semble pas venir de là.

++ j'ai vu mon erreur -> désolé, j'ai lu trop vite neutral

Je pense que c'est plutôt un truc comme ça :
Soit :

Code: php

  1. public function view($id = null)
  2.         {  
  3.             $specialite = $this->Specialites->get($id, [
  4.                 'contain' => ['Clients' => [
  5.                 'conditions' => ['Clients.fin_activite' => '0000-00-00']
  6.                 ]
  7.             ]);
  8.            
  9.             $this->set('specialite', $specialite);
  10.             $this->set('_serialize', ['specialite']);
  11.         }

ou bien

Code: php

  1. public function view($id = null)
  2. {  
  3.   $specialite = $this->Specialites->get($id, [
  4.     'contain' => ['Clients' => [
  5.       'conditions' => [function($q) {
  6.         return $q->where(['Clients.fin_activite' => '0000-00-00']);
  7.         }]
  8.       ]
  9.     ]
  10.   ]);
  11.  
  12.   $this->set('specialite', $specialite);
  13.   $this->set('_serialize', ['specialite']);
  14. }

Dernière modification par 6120 (08-12-2015 09:25:06)

Hors ligne

 

#8 08-12-2015 21:05:44

rescue
Pitivier
Date d'inscription: 05-12-2015
Messages: 15

Re: [RESOLU] Traduire une requete sql en cakephp

Bonsoir,

6120 super Génial vous avez trouvé la Solution.
J'ai pris la première c'est celle qui fonctionne parfaitement.
Il manque juste la fermeture d'un crochet, mais rien de bien grave cool
Mille Merci.
Je vais pouvoir avancer.
J'aurai une autre question mais j'ouvrirai un nouveau post pour ça.
Bravo et @ très bientôt...

Dernière modification par rescue (08-12-2015 21:08:37)

Hors ligne

 

Pied de page des forums

Propuls� par FluxBB
Traduction par FluxBB.fr