2010-06-15 19 views
3

Le livre de recettes CakePHP states qu'un modèle peut utiliser un fichier (csv par exemple) au lieu d'une table de base de données réelle, mais je n'ai trouvé aucune implémentation pour cela. Je me demandais s'il est possible d'utiliser un tableau de données comme modèle dans CakePHP, car j'ai un ensemble de données assez statique qui est important pour moi dans une relation avec une autre table mais qui ne fait pas un tout beaucoup de sens pour créer une table complète pour cela. Est-il possible de mettre en œuvre un modèle CakePHP en utilisant un tableau?Implémentation d'un modèle Cakephp en utilisant un tableau

+1

Si vous utilisez déjà une base de données, je créerais une table pour cet ensemble de données statiques. Votre base de données ne vous dérange pas et c'est beaucoup plus "propre" que "truquer" une table avec un tableau. –

Répondre

1

Si vous voulez, vous pouvez utiliser http://github.com/jrbasso/array_datasource qui est une source de données pour les modèles cartographiques aux données de tableau qui permettra vous reliez ces modèles aux modèles basés sur la base de données de manière transparente. Cela vous permet d'utiliser une source de tableau en tant que modèle sans rien faire d'autre que de fournir les données de la matrice et de définir le nom de la source de données dans le modèle.

Lisez les docs pour quelques exemples - il est vraiment très facile à utiliser et le code est facile à comprendre. Il vous permet également de faire des opérations normales de recherche * sur le modèle, les conditions, etc.

+0

merci pour l'accepter –

4

Il devrait être trivial à mettre en œuvre en utilisant un custom DataSource. Vous n'avez besoin d'implémenter qu'une poignée de méthodes pour lire et/ou écrire des données, que vous pouvez simplement obtenir à partir d'un tableau. Étant donné que chaque méthode est passé à l'instance de modèle comme premier paramètre, vous pouvez conserver les données réelles dans le modèle:

class MyModel extends AppModel { 
    public $useDbConfig = 'array'; 
    public $staticData = array(/* data here */); 
} 



// in the DataSource: 
public function read($model, $queryData = array()) { 
    $data = $model->staticData; 
    // do something with $data 
} 
+0

À propos de "dans la source de données" ... Où est-il (chemin)? quel fichier puis-je éditer avec cette fonction 'read()' ci-dessus? Il me semble que c'est une fonction de contrôleur, mais je ne suis pas sûr. –

+0

Veuillez lire le chapitre du manuel lié sur les sources de données personnalisées. – deceze

+0

Le lien dans la réponse est cassé. Quelqu'un peut-il fournir le lien de travail? – wenbert

Questions connexes