Hallo zusammen,
mein Anliegen ist ähnlich, wie unter https://forum.shopware.com/discussion/41144/doctrine-orderby formuliert, nur dass ich keinen Fehlermeldung erhalte.
In meinem SortingHandler, der in der services.xml registriert ist und der auch aufgerufen wird, verwende ich folgenden Code:
class CategorySortingHandler implements SortingHandlerInterface {
public function supportsSorting(SortingInterface $sorting) {
return $sorting instanceof CategorySorting;
}
public function generateSorting(SortingInterface $sorting, QueryBuilder $query, ShopContextInterface $context) {
$suffix = '_cs';
$query
->innerJoin(
'product',
's_articles_categories',
"sArticlesCategories{$suffix}",
"product.id = sArticlesCategories{$suffix}.articleID"
)
->addOrderBy(
"FIELD(sArticlesCategories{$suffix}.categoryID, :categoryId{$suffix})",
$sorting->getDirection()
);
$query->setParameter(":categoryId{$suffix}", $sorting->getField());
error_log(date('YmdHis').' '. __METHOD__.' $query: '. var_export($query->getSQL(), 1)."\n", 3, Shopware()->DocPath() . '/error.log');
}
}
Der Aufruf erfolgt so: $criteria->addSorting(new CategorySorting($catId, ‚DESC‘));
Jedoch erfolgt keine Sortierung nach der Kategorie-ID. Was habe ich übersehen?
Ich verwende Shopware 5.6.2
Vielen Dank im Voraus.