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


Bonjour,

tu as bien une table traductions en base?

PuLSor24
Auteur

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

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
Auteur

non il n'y a pas de préfix

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
Auteur

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

PuLSor24
Auteur

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

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
Auteur

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

PuLSor24
Auteur

ç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();
        }   
    }

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.

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
Auteur

Salut Devil,

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