Neulich im echten Leben:
Ein Produkt kann eine Reihe von Features haben. Ein Feature kann zu mehreren Produkten gehören. Einige Features eines Produkts sind sog. „highlight features“ für dieses Produkt.
Wenn man mit ein bischen Overhead in der MM-Tabelle leben kann lässt sich das tatsächlich mit TYPO3 Bordmitteln und einem zusätzlichen Feld in der MM-Tabelle erschlagen:
'features' => array( ... 'config' => array( 'type' => 'select', 'foreign_table' => 'tx_extkey_domain_model_feature', 'foreign_table_where' => 'ORDER BY tx_extkey_domain_model_feature.title', 'MM' => 'tx_extkey_product_feature_mm', 'MM_match_fields' => array('is_highlight' => 0), ) ... ) 'highlight_features' => array( ... 'config' => array( 'type' => 'select', 'foreign_table' => 'tx_extkey_domain_model_feature', 'foreign_table_where' => 'AND tx_extkey_domain_model_feature.uid IN ' . '(SELECT uid_foreign FROM tx_extkey_product_feature_mm WHERE uid_local=###THIS_UID###) ' . 'ORDER BY (SELECT sorting FROM tx_extkey_product_feature_mm WHERE uid_local=###THIS_UID### ' . 'AND uid_foreign=tx_extkey_domain_model_feature.uid and is_highlight!=1)', 'MM' => 'tx_extkey_product_feature_mm', 'MM_match_fields' => array('is_highlight' => 1), ) ... ) |
Damit die Auswahliste der möglichen „highlight features“ genauso sortiert ist, wie die Features behilft man sich eines 2ten Subqueries. Et voila ;).