Mach es doch bitte mit den vorgegebenen Bordmitteln:
PHP-Code:
function getProjectsByCategory($categoryId, $format='html5')
{
$objMetaModel = \MetaModels\Factory::byTableName('mm_test');
$objFilter = $objMetaModel->prepareFilter(7, array('cid' => $categoryId));
$objItems = $objMetaModel->findByFilter($objFilter, 'sorting');
return $objItems->parseAll($format, $objMetaModel->getView(5));
}
Beachte den zweiten Parameter, "sorting". So sortierst du korrekt in MetaModels.
Dein Problem ist dass du zwei Filter hast:
Code:
SELECT id FROM mm_test WHERE published=1
SELECT * FROM mm_test WHERE cat_id = 17 ORDER BY sorting ASC
Das erste ist der published filter, der liefert die ersten ids, welche bei dir dann auch die Reihenfolge bestimmen. Der zweite ist dann dein Filter, mittels welchem du gerne sortieren wyrdest.
Aber wie oben bereits geschrieben ist sowas "von hinten durch die Brust ins Auge", da man MetaModels direkt sagen kann wonach man sortieren moechte.
Auszug aus IMetaModel.php:
PHP-Code:
/**
* Filter the MetaModel by the provided filter settings.
*
* @param IFilter|null $objFilter The filter object to use or null if none.
*
* @param string $strSortBy Optional name of the attribute the entries shall be sorted.
*
* @param int $intOffset Optional offset for the first item.
*
* @param int $intLimit Optional amount of items to retrieve.
*
* @param string $strSortOrder Optional sorting direction, either 'ASC'(default) or 'DESC'.
*
* @param string[] $arrAttrOnly Names of the attributes that shall be enclosed in the result, defaults to
* empty which means all attributes.
*
* @return IItems The collection of IItem instances that match the given filter.
*/
public function findByFilter(
$objFilter,
$strSortBy = '',
$intOffset = 0,
$intLimit = 0,
$strSortOrder = 'ASC',
$arrAttrOnly = array()
);
Gruss
Chris