2013-03-20 2 views
2

У меня есть классы и две таблицы, отличные от TYPO3. Я определил таблицу non-TYPO3 как таблицу без столбцов uid, pid и т. Д.Сопоставление Extbase с таблицей non-TYPO3

Мои два класса:

  1. класс Tx_Abc_Domain_Model_Location расширяет Tx_Extbase_DomainObject_AbstractEntity
  2. класс Tx_Abc_Domain_Model_Facility расширяет Tx_Extbase_DomainObject_AbstractEntity

Мои две таблицы (с колоннами):

  1. локаций
    • ZipCode
    • город
    • facility_id
  2. объекты
    • facility_id
    • имя

Я сопоставляются атрибуты, как это:

config.tx_extbase.persistence.classes { 
    Tx_Abc_Domain_Model_Location.mapping { 
    tableName = locations 
    columns { 
     zipcode.mapOnProperty = zipcode 
     city.mapOnProperty = city 
     facility_id.mapOnProperty = facility 
    } 
    } 
    Tx_Abc_Domain_Model_Facility.mapping { 
    tableName = facilities 
    columns { 
     facility_id.mapOnProperty = uid 
     name.mapOnProperty = name 
    } 
    } 
} 

Моя проблема:

Атрибут объекта моей модели местоположения получил тип Tx_Abc_Domain_Model_Facility и когда я смотрю на местоположение с помощью LocationRepository он создает мне модель местоположения, которая содержит модель объекта.

Проблема возникает, когда я делаю поиск, возвращает несколько результатов. то есть местоположение с zipcode 12345 имеет два разных объекта (а расположение таблиц получило две строки с разными идентификаторами объекта), тогда я ожидаю получить две модели местоположения, и каждая из них получит правильную модель объекта.

Но вместо этого я получаю две модели местоположения, в которых есть одна и та же модель объекта. У них есть все возможности первого найденного местоположения.

Даже если я изменяю тип атрибута объекта на целое число, есть неправильные идентификаторы. Но если я разрешаю результат необработанного запроса в репозитории, я получаю правильные идентификаторы.

Я получаю также правильные идентификаторы или модели, когда я добавляю к обеим таблицам uid-column.

Нет ли возможности сопоставления таблиц без колонки uid с моделями Extbase?

Спасибо.

ответ

3

Хорошо, ответ на мой последний вопрос: Да, нет возможности сопоставлять таблицы без колонки uid с моделями Extbase.

Существует существующий билет на горне: http://forge.typo3.org/issues/25984

Причина, кажется, в mapSingleRow на жёстко прописанные $row['uid'] (метод) в классе Tx_Extbase_Persistence_Mapper_DataMapper.

1

Если вам не нужно много таблиц, вам может понадобиться создать представление для этих таблиц, чтобы просто отобразить uid.

т.е .:

CREATE VIEW tx_abc_domain_model_facility AS 
    SELECT facility_id AS uid, facilities.* FROM facilities; 
Смежные вопросы