Last active
January 17, 2018 19:04
-
-
Save alexey-kar/5361e7366c7c2aa9b9e2511793f5fc62 to your computer and use it in GitHub Desktop.
При стандартной сортировке если свойство типа Строка, то сортировка по нему производится как по строке, даже если там число, этот код даёт возможность сортировать поле Строка как Число
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SELECT | |
`iblock_element`.`ID` AS `ID`, | |
`iblock_element`.`NAME` AS `NAME`, | |
`iblock_element_props_single`.`IBLOCK_ELEMENT_ID` AS `IBLOCK_ELEMENT_PROPS_SINGLE_IBLOCK_ELEMENT_ID`, | |
`iblock_element_props_single`.`PROPERTY_661` AS `IBLOCK_ELEMENT_PROPS_SINGLE_PROPERTY_661`, | |
`iblock_element_props_single`.`PROPERTY_661`+0 AS `PROPS_TEST` | |
FROM `b_iblock_element` `iblock_element` | |
INNER JOIN `b_iblock_element_prop_s173` `iblock_element_props_single` ON `iblock_element`.`ID` = `iblock_element_props_single`.`IBLOCK_ELEMENT_ID` | |
WHERE `iblock_element_props_single`.`PROPERTY_661` > 0 | |
ORDER BY `iblock_element_props_single`.`PROPERTY_661`+0 DESC |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
$iblockId = 173; | |
$entityPropsSingle = \Bitrix\Main\Entity\Base::compileEntity( | |
sprintf('PROPS_SINGLE_%s', $iblockId), | |
[ | |
'IBLOCK_ELEMENT_ID' => ['data_type' => 'integer'], | |
'PROPERTY_661' => ['data_type' => 'integer'], | |
], | |
[ | |
'table_name' => sprintf('b_iblock_element_prop_s%s', $iblockId), | |
] | |
); | |
\Bitrix\Main\Application::getConnection()->startTracker(); | |
$result = \Bitrix\Iblock\ElementTable::getList([ | |
'select' => [ | |
'ID', | |
'NAME', | |
'PROPS_SINGLE.*', | |
'PROPS_TEST', | |
], | |
'filter' => [ | |
'>PROPS_SINGLE.PROPERTY_661' => 0, | |
], | |
'order' => [ | |
'PROPS_TEST' => 'DESC' | |
], | |
'runtime' => [ | |
'PROPS_SINGLE' => [ | |
'data_type' => $entityPropsSingle->getDataClass(), | |
'reference' => [ | |
'=this.ID' => 'ref.IBLOCK_ELEMENT_ID' | |
], | |
'join_type' => 'inner' | |
], | |
'PROPS_TEST' => [ | |
'data_type' => 'integer', | |
'expression' => ['%s+0', 'PROPS_SINGLE.PROPERTY_661'] | |
], | |
], | |
]); | |
// Можно смотреть сформированный запрос | |
echo '<pre>', $result->getTrackerQuery()->getSql(), '</pre>'; | |
echo '<pre>', print_r($result->fetchAll()), '</pre>'; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment