DatabaseQueryProcessor

The DatabaseQueryProcessor fetches records from the database, using standard TypoScript select semantics. The result is then passed to the FLUIDTEMPLATE as an array.

This way a FLUIDTEMPLATE cObject can iterate over the array of records.

Options:

if

if
Required

false

Data type

if condition

default

''

Only if the condition is met the data processor is executed.

table

table
Required

true

Data type

string / stdWrap

default

''

Name of the table from which the records should be fetched.

as

as
Required

false

Data type

string / stdWrap

default

'records'

The variable's name to be used in the Fluid template.

dataProcessing

dataProcessing
Required

false

Data type

array of dataProcessing

default

[]

Array of data processors to be applied to all fetched records.

Example: Display haiku records

Please see also About the examples.

TypoScript

We define the dataProcessing property to use the DatabaseQueryProcessor:

EXT:examples/Configuration/TypoScript/DataProcessors/Processors/DatabaseQueryProcessor.typoscript
tt_content {
   examples_dataprocdb =< lib.contentElement
   examples_dataprocdb {
      templateName = DataProcDb
      dataProcessing.10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
      dataProcessing.10 {
         if.isTrue.field = pages
         table = tx_examples_haiku
         orderBy = title
         pidInList.field = pages
         as = myHaikus
         // recursively process the images in the records with the FilesProcessor
         dataProcessing {
            10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
            10 {
               references.fieldName = image
            }
         }
      }
   }
}
Copied!

The Fluid template

In the Fluid template then iterate over the records. As we used the recursive data processor FilesProcessor on the image records, we can also output the images.

EXT:examples/Resources/Private/Templates/ContentElements/DataProcDb.html
<html data-namespace-typo3-fluid="true" xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers">
   <h2>Data in variable myHaikus</h2>
   <f:debug inline="true">{myHaikus}</f:debug>

   <h2>Output</h2>
   <div class="row">
      <f:for each="{myHaikus}" as="haiku">
         <div class="col-12 col-md-3">
            <div class="card" style="backgorund-color: {haiku.color};">
               <f:if condition="{haiku.files.0}">
                  <f:image image="{haiku.files.0}" class="card-img-top" height="300"/>
               </f:if>
               <div class="card-body">
                  <h5 class="card-title">{haiku.data.title}</h5>
                  <div class="card-text"><f:format.html>{haiku.data.poem}</f:format.html></div>
               </div>
            </div>
         </div>
      </f:for>
   </div>

</html>
Copied!

Output

Each entry of the records array contains the data of the table in data and the data of the images in files.

Haiku record data dump and output

Haiku record data dump and output