Вложенные операторы SQL в Typoscript

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

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

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

Клиенты у меня есть в таблице под названием «tx_myclients», а проекты у меня есть в виде страниц. Вот что я делаю http://pastebin.com/tfknf16Z

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


person Enrique Moreno Tent    schedule 21.03.2012    source источник


Ответы (1)


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

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

$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, чтобы оба имели независимые кеши

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

person konsolenfreddy    schedule 21.03.2012
comment
Надеюсь на это, потому что понятия не имею, что такое XCLASS или VIEW :( - person Enrique Moreno Tent; 21.03.2012
comment
@Dbugger: я обновил свой ответ и добавил подробное объяснение решения VIEW - person konsolenfreddy; 21.03.2012
comment
Использование копии таблицы работает? Как вы видите в моем примере, я использую 2 разные таблицы, tx_myclients и страницы, и это также останавливает внешний цикл... - person Enrique Moreno Tent; 21.03.2012