Sorting of foreign records in TCA type select
Currently records of a foreign table won't be sorted in a select field if foreign_table_where doesn't contain an "ORDER BY ..." statement.I'd suggest the following solution:
- Introduce a new option 'foreign_table_sortby'
- If 'foreign_table_sortby' is defined, use this statement for sorting
- Backward compatibility: If 'foreign_table_where' contains an 'ORDER BY ...' statement and 'foreign_table_sortby' is undefined, use the 'ORDER BY ...' statement as 'foreign_table_sortby'. If 'foreign_table_sortby' is defined, ignore 'ORDER BY ...' statements in 'foreign_table_where'
- If 'foreign_table_sortby' is not defined, use 'default_sortby' of the foreign table
In the long term this is a cleaner solution and if no sorting is defined, the records are sorted according to the default sorting.
#1 Updated by Robert Wildling about 1 year ago
- Tracker changed from Feature to Bug
- Category set to Backend API
- Target version set to next-patchlevel
- TYPO3 Version set to 8
- PHP Version set to 7.1
I just came over a similar problem: the default_sortby is a date field (start_date) and it works fine, if it is used as the standard sorting mechanism of the table. But as soon as it is used as the right table of an m:m relation, things don't work as nicely any more, when the TCA does NOT define an ORDER BY. As soon as there is an "ORDER BY start_date" it works as expected - but it is "double the trouble".
I would say: if there is no ORDER BY, then the standard sorting mechanism of the table should be used.
(I am not so sure if the intrdocution of a new sorting mechanism is necessary...)
TYPO3 8.7.1, php 7.1.13, MAMP with opcache