2009-09-16 8 views
3

J'ai un tableau de valeurs que je veux mettre à jour mon modèle. Doctrine_Access fournit une fonction setArray qui est presque exactement ce dont j'ai besoin - sauf qu'elle se soucie des valeurs qui n'ont pas de champs dans le modèle. Je veux que ceux-ci soient ignorés.Doctrine: Définir les valeurs du modèle en tant que tableau

Un petit exemple. Disons que nous avons une table Utilisateur avec le nom d'utilisateur du champ.

$user = new User(); 
$user->setArray(array('username'=>'xyz'))->save(); 

Cela fonctionnerait!

$user = new User(); 
$user->setArray(array('username'=>'xyz','anotherKey'=>'anotherValue'))->save(); 

Cela ne fonctionne pas. Je veux que Doctrine ignore simplement une autre clé, s'il n'y a pas de champ associé. L'intention est, que je ne veux pas filtrer mes tableaux avant de mettre à jour mon modèle.

Quel est le moyen le plus propre et le plus facile d'y parvenir?

Répondre

1

Doctrine_Record :: fromArray() le résout. Malheureusement, il ne revient pas l'objet, il est donc inutile de méthodes enchaînées ...

-1

ce qui est utile

Ajouter méthode de recherche pour le modèle:

class Address extends Doctrine_Record { 

    public static function factory() { 
     return new Address(); 
    } 

public function findById($id) { 
     $findObject = Doctrine::getTable('Address')->findOneByid($id); 
     return $findObject; 
    } 
.... 

et l'utiliser

$address = Address::factory() 
     ->findById(13)->set('name', 'new data')->set('anotherfield','another data')->save(); 
+1

Je pense que vous avez mal compris la question. Il essaie de créer un nouvel enregistrement, en instanciant le modèle et en définissant les valeurs à partir d'un tableau. Vous ne l'avez pas approché de ça. Désolé pour le vote bas, je dois laisser savoir aux autres que ce n'est pas une réponse utile. –

Questions connexes