Вложенные операторы SQL в Typoscript - PullRequest
0 голосов
/ 21 марта 2012

результат, который я хочу достичь, примерно такой:

A
    Anthony SL
        Cars Project
        Flyers printing
        Projekt 3
C
    Carl SL
        Painting job

В основном алфавитный указатель клиентов и связанных с ними проектов.

Клиенты, которых я имею, находятся в таблице с именем "tx_myclients", а проекты - в виде страниц. Вот что я делаю http://pastebin.com/tfknf16Z

но по какой-то причине кажется, что внутренний выбор останавливает цикл на внешних. Что я мог сделать? Не могу ли я иметь вложенные операторы SQL?

1 Ответ

1 голос
/ 21 марта 2012

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

В этом отношении информация рендеринга хранится в (123 - это идентификатор этого клиента):

$GLOBALS['TSFE']->recordRegister['tx_myclients:123']

Взгляните на typo3/sysext/cms/tslib/content/class.tslib_content_content.php, вокруг строки 134ff

Чтобы решить эту проблему, можно XCLASS tslib_content_Content или создать представление в MySQL, которое показывает ваши данные в виде другой таблицы:

CREATE VIEW tx_myclients_view
AS 
    SELECT * 
    FROM tx_myclients

Я уверен, что есть множество других обходных путей.


Редактировать

Для части вида (это проще, чем XCLASS):

  • Используйте приведенный выше оператор SQL в инструменте MySQL
  • Замените имена таблиц / представлений именами, соответствующими вашей таблице (представление также должно начинаться с tx_)
  • Теперь у вас будет «таблица» в базе данных MySQL, которая является точной «копией» (*) вашей реальной таблицы, просто с другим именем
  • выберите первый цикл из tx_myclients ивторой из tx_myclients_view, поэтому оба имеют независимые кэши

(* ItНа самом деле это не копия, а таблица.Когда вы выбираете из него, он запускает оператор выбора из оператора CREATE VIEW.Другими словами, если вы CRUD на оригинале, это отражается в представлении. Подробнее в документации )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...