2010-03-22 4 views
1

je reçois l'erreur SQL suivante:CakePHP, i18n, erreur SQL, pas de table/d'alias unique

SQL Error: 1066: Not unique table/alias: 'I18n__name' 

lorsque vous faites une simple requête de recherche.

Des idées sur des situations possibles qui peuvent avoir causé cela ?? J'utilise une méthode bindModel pour récupérer les données est-ce lié?

Ceci est mon code:

$this->Project->bindModel(array(
             'hasOne' => array(
             'ProjectsCategories', 
             'FilterCategory' => array(
                   'className' => 'Category', 
                   'foreignKey' => false, 
                   'conditions' => array('FilterCategory.id = ProjectsCategories.category_id') 
                   )))); 
$prlist = $this->Project->find('all', array(
                'fields' => array('DISTINCT slug','name'), 
                'conditions' => array('FilterCategory.slug !='=>'uncategorised') 
                )) 
+0

Quelle est votre «requête de recherche simple»? – Young

Répondre

0

Je n'ai pas une réponse directe à mon problème. Cependant, après quelques recherches, je suis arrivé à la conclusion suivante.

J'ai décidé de changer ma méthodologie et d'arrêter d'utiliser le comportement de traduction dans cakephp. J'ai trouvé un autre comportement appelé i18n qui fonctionne beaucoup mieux avec les modèles associés. Vous pouvez lire à ce sujet http://www.palivoda.eu/2008/04/i18n-in-cakephp-12-database-content-translation-part-2/#comment-1380 Dans le livre CakePHP il dit:

"Note that only fields of the model you are directly doing find on will be translated. Models attached via associations won't be translated because triggering callbacks on associated models is currently not supported."

Je ne sais pas si je fait le bon choix mais je me bats pour obtenir le comportement traduire à travailler dans CakePHP et cette solution au moins rend le projet que je travaille fonctionnel.

1

Vous n'avez pas utilisé ou initialisé le tableau/modèle requis que vous utilisez dans votre automate. Utilisez var $uses = array('your_table_name');