2010-12-01 26 views
1

J'essaie de mettre en œuvre Doctrine en plus de la base de données MySql héritée. Pour l'instant, ça fait du bien. Mais ...Doctrine - Valeurs séparées par des virgules dans le champ

J'ai événements tableau whitch a la structure suivante:

CREATE TABLE `events` (
    `uid` int(11) NOT NULL AUTO_INCREMENT, 
    -- skipped --- 
    `title` varchar(255) NOT NULL DEFAULT '', 
    `category` text, 
)... 

et table Catégories, whitch a catégories. La structure est comme ...

CREATE TABLE `tx_tendsical_category` (
    ... 
`title` varchar(255) NOT NULL DEFAULT '', 
    ... 
) 

maintenant ... Catégorie IDS sont stockés sous forme de virgule (,) valeurs séparées dans le champ events.category. Comment puis-je configurer les relations sans trop de tracas ... J'ai besoin de hasMany etc ...

+0

Vous seriez mieux normalisant pour vous donner une table Events_categories –

+0

Je ne peux pas parce que je suis seulement la mise en œuvre du système « vue », la base de données ne peut pas être modifié :( –

Répondre

3

Si vous rencontrez des problèmes avec le schéma de base de données, écrivez vos propres hydrators. Lorsque vous récupérerez toutes les données, analysez-les et renvoyez les collections d'objets appropriées.

0

Je l'ai fait de cette façon ... Perhapse il y a un meilleur moyen?

public function getCategories(){ 
    return Doctrine_Query::create() 
     ->from("Category c") 
     ->where("c.uid IN ?",array(explode(",",$this->category))) 
     ->execute(array(),Doctrine_Core::HYDRATE_ON_DEMAND); 
}