extbase mapping to an existing table doesn't work

I've extended the pages table and now I want to use some of the data in a domain object called "Tags".
Итак, я попробовал следующее в /Configuration/TypoScript/setup.txt :

plugin.myextension.persistence.classes.Tx_myextension_Domain_Model_Tag {
    mapping {
        tableName = pages
        recordType = Tx_myextension_Domain_Model_Tag
        columns {
            tx_myextension_tag_name.mapOnProperty = name
            uid.mapOnProperty = id
        }
    }
}

Но похоже, что расширение пытается получить доступ к таблице Tx_myextension_Domain_Model_Tag (которой не существует)

Это ошибка, которую я получаю:

Tx_Extbase_Persistence_Storage_Exception_SqlError`

Таблица 'tx_myextension_domain_model_tag' не существует: SELECT tx_myextension_domain_model_tag. * FROM tx_myextension_domain_model_tag. * FROM tx_myextension_domain_model_tag. * FROM tx_myextension_domain_model_tag. * FROM tx_myextension_domain_model_tag. 121 --- 1853032- Какой лучший дизайн я могу использовать для определения методов с одинаковыми именами? Есть такая проблема дизайна. Предположим, у вас есть набор классов, реализующих похожие методы, но не идентичные. Пример: у ClassA есть такие методы. void Add (строка str); void ...

Есть такая проблема дизайна.

Предположим, у вас есть набор классов, реализующих похожие методы, но не идентичные.

Пример: ClassA имеет такие методы.

void Add(string str);
void Delete(string str);
List<string> GetInfo(string name);

Другой класс, ClassB, имеет следующие методы.

void Add(Dictionary Info);
void Delete(string str);
Dictionary GetInfo(string name);

Итак, природа методы аналогичны, но типы возвращаемых данных / входные параметры отличаются. Если я разработаю интерфейс для сохранения согласованности, я могу определить только операцию удаления там. В качестве альтернативы я могу думать о наборе независимых классов без каких-либо отношений друг с другом (конечно, без реализаций интерфейса), но я не думаю, что это хороший дизайн.

  1. Какой подход я могу использовать для реализации этого?
  2. Я новичок в общих интерфейсах. Помогает ли это в этом случае? Если так, я собираюсь изучить и внедрить их. чтобы увидеть, что недавно выводил процесс nohup-ed? У меня все еще открыт этот процесс, но я запустил его с перенаправлением всего вывода на /dev/...

    Я знаю, что шансы крайне малы, но есть ли способ и я могу показать, что время тратится после завершения работы функции, но до того, как она вернет управление, следующим методом:

    ts1 = tic;
    disp ('calling function');
    functionCall(args);
    disp (['control returned to caller - ', num2str(toc(ts1))]); 
    

    Первая строка функции, которую я вызываю, - ts2 = tic , а последняя строка is

    disp (['last line of function- ', num2str(toc(ts2))]);
    

    В результате

    вызывающая функция

    последняя строка функции - 24.0043

    элемент управления возвращен вызывающей стороне - 49.857

    Пробираясь по межсетям, я думаю, что это симптом того, как MATLAB управляет объем памяти. Он освобождается при возврате функции, и иногда это занимает много времени. Функция выделяет несколько больших (~ 1 миллион элементов) массивов. Он также работает с дескрипторами, но не создает никаких новых объектов дескрипторов или хранилищ явно. Мои вопросы:

    1. Это определенно проблема с управлением памятью?
    2. Есть ли какой-нибудь систематический способ диагностировать причину проблемы в этой функции? WHERE th.parent = 1015 AND th.tid IN ( SELECT DISTINCT(th1.tid) FROM term_hierarchy AS th1 INNER JOIN term_hierarchy ...

      I am trying to do a query like this:

      DELETE FROM term_hierarchy AS th
      WHERE th.parent = 1015 AND th.tid IN (
          SELECT DISTINCT(th1.tid)
          FROM term_hierarchy AS th1
          INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid AND th2.parent != 1015)
          WHERE th1.parent = 1015
      );
      

      As you can probably tell, I want to delete the parent relation to 1015 if the same tid has other parents. However, that yields me a syntax error:

      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS th
      WHERE th.parent = 1015 AND th.tid IN (
        SELECT DISTINCT(th1.tid)
        FROM ter' at line 1
      

      I have checked the documentation, and run the subquery by itself, and it all seems to check out. Can anyone figure out what's wrong here?

      Update: As answered below, MySQL does not allow the table you're deleting from be used in a subquery for the condition.

76
задан Sam 10 August 2014 в 12:31
поделиться