2010-10-05 11 views
0

Je souhaite enregistrer tous les champs, sauf certains. Je sais que je peux le faire de cette façonModèle CakePHP-> save(): sauvegarde de tous les champs exclus, sauf certains champs

$this->Blah->save($this->data,false,$fieldList) 

Où $ fieldList contient tous les champs de données de la table, mais ceux-ci, je ne veux pas être sauvé. J'ai des tables qui ont des champs de données maaany, et je ne veux pas écrire toute la liste à partir de zéro dans chaque action du contrôleur (oui, les champs qui ne devraient pas être sauvegardés diffèrent d'une action à l'autre). En outre, il semble désordonné et confus. Est-ce que cakePHP fournit quelque chose de prêt à l'emploi pour ce cas? Sinon, je suppose, je dois la mettre en œuvre par moi-même en ajoutant une propriété fieldList $ à chaque contrôleur et de faire quelque chose comme ça (laid-ensemble solution piraté):

$tmp = $fieldList; 
unset(array_search('fieldtoexclude', $tmp)); 
$this->Blah->save($this->data,false,$tmp); 

Cordialement

+4

Même question ici, réponses à la fois 'unset()' et '$ fieldList': http://stackoverflow.com/questions/3764247/update-large-cakephp-model-but-dont-touch-certain-fields/3764277 – Stephen

+0

merci, désolé n'a pas trouvé cette question – joni

Répondre

0

Si la liste de champs passe de l'action à l'action, vous recherchez une fonction automagique capable de lire dans votre esprit. Le gâteau ne fournit pas ça!

Quelque part, vous devez dire quels champs doivent être exclus et si vous le faites de manière claire, votre code sera beaucoup plus facile à maintenir.

S'il s'agit d'un seul contrôleur, définissez la liste en tant que variable de classe ou sous-classez l'action de sauvegarde sur le modèle.