Bonjour,

J'ai besoin de mettre en place une fonction commune à mes modèles.
J'ai des modèles définis comme ceci :
Code de Fournisseur.php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?php
App::uses('AppModel', 'Model');
class Fournisseur extends AppModel {
 
    public $useTable = 'fournisseurs';
}
et
Code de Articles.php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?php
App::uses('AppModel', 'Model');
class Articles extends AppModel {
 
    public $useTable = 'articles';
}

Ma fonction doit me renvoyer le nom de mes $useTable
J'ai donc fait :
Code de AppModel.php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<?php
App::uses('Model', 'Model');
class AppModel extends Model {
    public function getTable(){
        return $this->useTable;
    }
}

Tant qu'il n'y a que ça, tout se passe bien, pas d'erreur de compilation.
Le problème arrive quand je veux appeler cette fonction dans mon contrôleur
Code de FournisseursController.php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<?php
App::uses('AppController', 'Controller');
class FournisseursController extends AppController {
     public $uses = array(
        'Fournisseur',
        'Article',
    );
    public function index(){
        var_dump($this->Fournisseur->getTable());
        exit();
    }

L'appel de la fonction me fait une erreur SQL (oui, SQL)
Citation Envoyé par Erreur
Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'getTable' at line 1
A noter : la même erreur SQL arrive si je change ma fonction comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    public function getTable(){
        return 'toto';
    }
Quelqu'un peut éclairer ma lanterne ? Même une simple piste...

(et oui, je sais que je n'ai pas besoin de mettre $useTable = "articles" puisque c'est la convention de nommage automatique, mais le nom de table changera à l'avenir...)