Après continue la lecture sur la façon dont CakePHP travaille avec la base de données MySQL et étudie également les syntaxes MySQL, j'ai trouvé la solution ci-dessous et cela a fonctionné. Je poste ici pour les autres qui peuvent en avoir besoin et/ou pour les développeurs plus expérimentés pour poster plutôt ou pas c'est une bonne idée.
Je trouve le fichier où CakePHP saisit les tables de la base de données:
/lib/Cake/Model/Datasource/Database/Mysql.php
je trouve la ligne de code qui fait ce travail:
$result = $this->_execute('SHOW TABLES FROM ' . $this->name($this->config['database']));
Notez la déclaration MySQL, especifically:
'SHOW TABLES FROM ' . $this->name($this->config['database'])
lecture de la documentation SHOW TABLES
, j'ai appris ce qu'il fait et sa syntaxe: https://dev.mysql.com/doc/refman/5.7/en/show-tables.html
Alors, je l'ai changé la déclaration:
'SHOW FULL TABLES FROM ' . $this->name($this->config['database']) . ' WHERE Table_Type != "VIEW"'
En gros:
I changé SHOW TABLES
à SHOW FULL TABLES
de sorte qu'il inclurait la deuxième colonne qui contient BASE TABLE
pour les tables régulières et VIEW
pour les vues.
Puis, j'ai utilisé cette deuxième information de colonne dans l'instruction WHERE
que j'ai ajouté: WHERE Table_Type != "VIEW"'
pour filtrer les vues sur les résultats.
La nouvelle ligne finale est:
$result = $this->_execute('SHOW FULL TABLES FROM ' . $this->name($this->config['database']) . ' WHERE Table_Type != "VIEW"');
L'application semble fonctionner parfaitement à nouveau!
Alors c'est la meilleure façon de s'y prendre? Déclarez le tableau de chaque modèle un par un? Je ne peux pas simplement ajouter un code de config ou cmd quelque part qui dit ignorer les vues? – vivipoit
pourriez-vous me montrer quel genre de confusion votre application a. parce qu'en fait cette situation est étrange, et j'ai travaillé avec des tables mon application ne fonctionne pas et tout fonctionne très bien –
Donc, il y a toujours eu des tables que cette application n'a pas utilisé. C'était ok. Le problème est que les vues que cette autre personne a faites étaient de relier les choses différemment pour sa fin, ce qui signifiait alors que CakePHP lisait les relations différemment aussi. L'une de ces vues modifie directement une association. J'ai trouvé quelque chose qui semble fonctionner. Je suis sur le point de le poster et j'espère que les commentaires seront que c'est ok. – vivipoit