cakephp stored procedure

Par PuLSor24, il y a 11 ans


Bonjour,
mon souci est que j'aimerais bien faire des appels à ma db en par des procédure stockées en sql serveur.

j'ai conçu mon model de telle sorte :

App::uses('AppModel', 'Model'); class TraductionModel extends Model { public function getTraduction(){ $query = "select * from Translate"; $conn = ConnectionManager::getDataSource('default');$result = sqlsrv_query($conn, $query); $row = sqlsrv_fetch_array($result); return $row; } }

Mon controleur :

App::uses('Traduction', 'Model'); class TraductionController extends AppController{ public function index(){ $this->loadModel("Traduction"); $this->set('traduction', $this->paginate()); } }

Se qui me donne le résultat suivant :

Error: Table traductions for model Traduction was not found in datasource default.

Merci d'avance

13 réponses

PuLSor24, il y a 11 ans

Je ne pence pas que mon model soit bon .. ?

antho07, il y a 11 ans

Bonjour,

tu as bien une table traductions en base?

PuLSor24, il y a 11 ans

Oui oui et ma database.php est correcte, car au moment d'installer cakephp, je n'ai pas eu d'erreur .

antho07, il y a 11 ans

Oui la connexion à la base c'est bien passé mais visiblement il ne trouve pas la table traductions.
N'y a-t-il pas un préfix sur le table?

PuLSor24, il y a 11 ans

non il n'y a pas de préfix

antho07, il y a 11 ans

L'erreur est pourtant explicite pour le coup ...
Pourquoi tu charges tout à la main ? Le modèle etc... les conventions de cakephp semble respectés

PuLSor24, il y a 11 ans

car plus tard, j'aimerais charger des procédure stokée

Lartak, il y a 11 ans

Bonsoir.
Dans ta requête déja, tu demandes la table Translate, si tu ne veux pas qu'il cherche dans une table par défaut, il faut que tu précises :

public $useTable = false;

Sinon je te conseille de bien regarder dans la doc de CakePHP, il y est bien expliqué comment faire pour des requêtes sans utiliser le système standard de CakePHP, par exemple:

$db = $this->getDataSource(); $db->fetchAll( 'SELECT * from users where username = ? AND password = ?', array('jhon', '12345') ); $db->fetchAll( 'SELECT * from users where username = :username AND password = :password', array('username' => 'jhon','password' => '12345') );

Ensuite, si tu veux récupérer les résultats de ta fonction du modèle Traduction, il faut que tu l'appelles depuis la fonction de ton controller.

$this->Traduction->getTraduction();
PuLSor24, il y a 11 ans

Merci pour t'as solution,
Je testerais Une fois devant mon ordinateur

PuLSor24, il y a 11 ans

ça me mais, exactement la même erreur avec t'as solution :s

$db->fetchAll() C'est bon aussi pour sqlserveur ?
C'est au niveau du controlleur le problème, il ne passe même pas dans le model

class TraductionController extends AppController{ public function index(){ $this->Traduction->getTraduction(); } }
Lartak, il y a 11 ans

Si ça te retourne toujours l'erreur comme quoi il ne trouve pas la table traductions dans la base de donnée renseignée dans la configuration par défaut, il n'y a pas 36 raisons à ça.

The-Devil, il y a 10 ans

Bonjour @PuLSor24,

as-tu finalement réussi à exécuter une procédure stocké sql server depuis Cakephp ?
Je rencontre exactement le même problème actuellement et je n'arrive pas à en extrairele résultat.
J'ai créer un post sur le forum : Procédure stocké SQL server & Cakephp
Si tu pouvais passer dessus ce serait top ^^

Merci d'avance

PuLSor24, il y a 10 ans

Salut Devil,

ne j'ai fini par abandonner Cakephp.
Je suis parti sur ZendFramework