Доктрина - значения, разделенные запятыми, в поле

Я пытаюсь реализовать Doctrine поверх устаревшей базы данных MySql. На данный момент это работает отлично. Но...

У меня есть таблица Events со следующей структурой:

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

И таблица Категории, в которой есть категории. Структура такая...

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

Теперь... Идентификаторы категорий хранятся как значения, разделенные запятыми (,) в поле events.category. Как я могу установить отношения без особых хлопот... Мне нужно hasMany и т.д...


person Oto Brglez    schedule 01.12.2010    source источник
comment
Вам лучше нормализовать, чтобы получить таблицу Events_categories   -  person Mark Baker    schedule 01.12.2010
comment
Я не могу, потому что я только внедряю систему просмотра, базу данных нельзя изменить :(   -  person Oto Brglez    schedule 01.12.2010


Ответы (2)


Если у вас проблемы со схемой базы данных, напишите свои собственные гидраторы. Когда вы получите все данные, проанализируйте их и верните правильные коллекции объектов.

person Tomasz Kowalczyk    schedule 01.12.2010

Я сделал это так ... Может быть, есть лучший способ?

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);
}
person Oto Brglez    schedule 02.12.2010