Je veux créer un modèle qui a QUELQUES attributs qui ne sont pas stockés dans une base de données. Par exemple, je veux conserver un champ "âge" dans le modèle, mais je ne stocke que des informations d'anniversaire dans la base de données (je peux calculer "âge" une fois que l'information de la DDN a été chargée). J'ai essayé d'ajouter un attribut simple à une extension de modèle, mais autant que je sache, CakePHP l'ignore. Quelle est la bonne façon d'y parvenir? Je suis un novice de CakePHP, alors pardonnez-moi si quelque chose me manque.CakePHP newbie question: Comment ajouter un attribut non-base de données au modèle?
Répondre
Je le ferais en utilisant la méthode de rappel afterFind dans le modèle.
Ça fait longtemps que je n'ai pas traité avec Cake, mais pourquoi ne pas simplement implémenter une méthode getAge()?
Je préfère cette solution. C'est explicite et documenté dans un emplacement logique. 'afterFind()' fonctionnerait, bien sûr, mais il cache la logique plus que je ne le voudrais. La disponibilité d'une propriété 'age' semblerait magique aux nouveaux développeurs. –
Utilisez la classe Cache
:
$parametrs = array('age'=>21, 'name'=>'aziz');
Cache::write('myOptions', $parameters);
Cache::read('myOptions');
Si vous utilisez CakePHP 1.3, vous pouvez utiliser le champ 'virtuel': http://book.cakephp.org/view/1608/Virtual-fields [livre de recettes 3.7.10]
[modifier] Il a également fonctionne dans CakePHP 2.x: http://book.cakephp.org/2.0/en/models/virtual-fields.html
Le principal avantage de cette approche est que le champ virtuel est ajouté dans le modèle. De cette façon, les principes MVC sont respectés.
exemple (MySQL):
var $virtualFields = array(
'age' => "YEAR(NOW()) - YourModelHere.dob"
);
Il y a deux façons de le faire avec un gâteau.
Utilisez des champs virtuels http://book.cakephp.org/2.0/en/models/virtual-fields.html
Utiliser call back afterFind() http://changelog.in/2012/07/alternative-to-cakephps-virtual-fields-which-is-far-less-restrictive/
- 1. asp.net mvc newbie question
- 2. Erlang newbie question
- 3. Unity Newbie Question
- 4. Ajouter un champ au modèle, comme annoter
- 5. VB.NET Comment ajouter un attribut de retour?
- 6. Comment protéger un attribut de modèle Rails?
- 7. PHP DOM: plutôt newbie question
- 8. Newbie C# et webservices question
- 9. Newbie php classe héritage question
- 10. Comment dynamique ajouter un champ personnalisé au modèle
- 11. Consommer un fichier WSDL en utilisant .NET - Total Newbie Question!
- 12. Newbie question liée à UIFont et UIColor
- 13. comment définir un widget dans un modèle attribut
- 14. accès au modèle à partir du fichier layout dans CakePHP
- 15. Modèle CakePHP avec "Entre dates"
- 16. Comment ajouter un dossier au projet de base de données?
- 17. IIS 7 Applications et asp.net - newbie question
- 18. Comment ajouter un attribut à un noeud XML sérialisé?
- 19. CakePHP views question
- 20. Ajout de données avant d'enregistrer dans CakePHP
- 21. CakePHP: autorisations basées sur un modèle?
- 22. Comment ajouter un attribut à un élément XmlArray (XML Serialization)?
- 23. WPF: Liaison avec paramètre non statique? (newbie question)
- 24. Modèle de catégorie Wordpress Question
- 25. Comment ajouter un espace de noms à un attribut dans lxml
- 26. Modèle et structure de contrôleur dans CakePHP
- 27. Ajouter un attribut de catégorie à un PropertyDescriptor
- 28. Html/Javascript: Ajouter un attribut à un contrôle HTML
- 29. Question de modèle de conception de base de données relationnelle - base de données Massive Read Only
- 30. Ajouter un attribut XML Namespace à un fichier XML tiers?
+1 Cela semble prometteur. Il suffit de calculer l'âge et de le coller dans une propriété. – timdev