La classe AppModel dans CakePHP possède un nombre conséquent de méthodes intéressantes, cependant il y a une méthode qui n’a pas été implémentée et qui pourtant peut se révéler particulièrement utile dans certains cas. Il s’agit de la méthode truncate()
.
Pourquoi cette méthode n’est-elle pas implémentée? Sans doute car trop dépendante du système de base de données utilisé? Ou alors parce que les développeurs du framework n’y voient tout simplement aucun intérêt… Aucune idée, mais ce n’est pas vraiment ce qui nous intéresse, n’est-ce pas? Au lieu de se focaliser sur le pourquoi, concentrons-nous donc sur le comment…
La solution que je vais vous montrer pour ajouter la méthode truncate()
aux modèles CakePHP doit évidemment suivre le principe DRY, c’est-à-dire qu’on écrit la fonction qu’une seule fois et qu’elle est accessible d’à peu près partout. Et quel meilleur endroit que le fichier AppModel.php pour écrire une méthode accessible par tous les modèles? Hmmm? Et bien il n’y en a pas, on écrira donc notre méthode truncate()
dans le fichier Model/AppModel.php.
Un modèle CakePHP est toujours attaché à un objet DboSource. Cet objet possède une méthode intéressante pour récupérer le nom de la table associée au modèle: fullTableName()
.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Pour exécuter la méthode truncate()
sur un de vos modèles, rien de plus facile!
En admettant que vous ayez un modèle Comment associé à une table comments, vous exécuterez la méthode de la façon suivante:
1
|
|
La méthode proposée ici fonctionne sur MySQL, vous pouvez évidemment l’adapter à vos propres besoins.
Une dernière remarque… Si l’un de vos modèles utilise une source de données différente, vous pouvez simplement redéfinir la méthode truncate()
.