Feature #93450
Updated by Ayke Halder almost 4 years ago
h2. Current state
A TypoScript "select":https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Functions/Select.html object must have at least one constraint of @uid@ or @pid@ - configured via properties "uidInList":https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Functions/Select.html#uidinlist and "pidInList":https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Functions/Select.html#pidinlist
h2. Feature proposal
Allow to completely disable the pid_uid constraint on purpose in ContentObjectRenderer.
<pre><code class="javascript">
10 = CONTENT
10 {
table =
select {
uidInList = 0
pidInList = 0
}
}
</code></pre>
h2. Motivation
Get records from a m:n-relation where you already know the @uids@ of one side.
Tables respresenting m:n-relations do not have a field named @uid@ - instead they have @uid_local@ and @uid_foreign@.
As a current work-around you must pre-fill @pidInList@ with *all* @pids@ of the entire database to make this work:
<pre><code class="javascript">
pidInList.data = leveluid : 0
recursive = 99
</code></pre>
Example code taken from "tt_content.menu_categorized_content":https://github.com/TYPO3-CMS/fluid_styled_content/blob/7f82e53465a4abec54f5c397c5d1a5d7af78b315/Configuration/TypoScript/ContentElement/MenuCategorizedContent.typoscript#L6-L22
<pre><code class="javascript">
tt_content.menu_categorized_content =< lib.contentElement
tt_content.menu_categorized_content {
templateName = MenuCategorizedContent
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
10 {
table = tt_content
selectFields = tt_content.*
groupBy = uid
pidInList.data = leveluid : 0
recursive = 99
join.data = field:selected_categories
join.wrap = sys_category_record_mm ON uid = sys_category_record_mm.uid_foreign AND sys_category_record_mm.uid_local IN(|)
where.data = field:category_field
where.wrap = tablenames='tt_content' and fieldname='|'
orderBy = tt_content.sorting
as = content
}
}
}
</code></pre>
h2. Code base
"TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer - L6078-L6081":https://github.com/TYPO3-CMS/frontend/blob/2afb96c6725d7751bdb2ca3a53e9566b2eaff52b/Classes/ContentObject/ContentObjectRenderer.php#L6078-L6081
<pre><code class="php">
// If not uid and not pid then uid is set to 0 - which results in nothing!!
if (!$pid_uid_flag) {
$constraints[] = $expressionBuilder->eq($table . '.uid', 0);
}
</code></pre>