Skip to content

Instantly share code, notes, and snippets.

@di7spider
Last active May 24, 2023 12:49
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save di7spider/55310df1a0367a7c82e6 to your computer and use it in GitHub Desktop.
Save di7spider/55310df1a0367a7c82e6 to your computer and use it in GitHub Desktop.
1C Bitrix :: D7 SQL Dump
<?php
/** Выводит / возвращает Dump SQL запроса Bitrix D7 и старого ядра */
if( !function_exists('_dumpSQL') ){
function _dumpSQL(callable $callback, array $params = [])
{
$result = [];
if($params['user'] == 'all' || $GLOBALS['USER']-> isAdmin() ){
$backtrace = array_shift( debug_backtrace() );
$result['FILE'] = $backtrace['line'].": ".$backtrace['file'];
$con = \Bitrix\Main\Application::getConnection();
$GLOBALS['DB']-> sqlTracker = $con-> startTracker();
$res = call_user_func($callback);
$con-> stopTracker();
foreach(is_array($res) ? $res : [$res] as $key => $obj){
$sql = null;
if( is_a($obj, '\CDBResult') ){
$sql = $obj-> DB-> sqlTracker-> current()-> getSql();
}else if( is_a($obj, '\Bitrix\Main\DB\Result') ){
$sql = $obj -> getTrackerQuery()-> getSql();
}
if( !empty($sql) ){
$result['SQL'][$key] = $sql;
$dump[] = $key." - ".get_class($obj)." -> \n".$sql;
}
}
if($params['show'] !== false){
$separator = "\n".str_pad("", strlen($result['FILE']), "=")."\n";
die(
'<pre>'
.$result['FILE']
.$separator
.implode($separator, $dump)
.'</pre>'
);
}
}
return $result;
}
}
?>
@di7spider
Copy link
Author

Пример использования:

/** Быстрое подключение функции */
eval('?>'.file_get_contents("https://goo.gl/lTK6DW").'<?php ');

/** Вывод Dump */
_dumpSQL(function(){

  return [

      \CIBlockElement::getList(
        false,
        Array(
          'IBLOCK_ID' => 36,
          'ACTIVE' => 'Y'
        )
      ),

      \Bitrix\Iblock\SectionElementTable::getList([
           'select' => [
             'SID' => 'IBLOCK_SECTION_ID',
               new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')
           ]
      ])
  ];

});

Результат:

94: /var/www/devapi.magiadigamma.ru/www/_test/_test.php
=======================================================
0 - CIBlockResult -> 
SELECT 
    `catalog_catalog_iblock`.`IBLOCK_ID` AS `IBLOCK_ID`,
    `catalog_catalog_iblock`.`PRODUCT_IBLOCK_ID` AS `PRODUCT_IBLOCK_ID`,
    `catalog_catalog_iblock`.`SKU_PROPERTY_ID` AS `SKU_PROPERTY_ID`,
    `catalog_catalog_iblock_iblock`.`VERSION` AS `VERSION`
FROM `b_catalog_iblock` `catalog_catalog_iblock` 
INNER JOIN `b_iblock` `catalog_catalog_iblock_iblock` ON `catalog_catalog_iblock`.`IBLOCK_ID` = `catalog_catalog_iblock_iblock`.`ID`
WHERE `catalog_catalog_iblock`.`PRODUCT_IBLOCK_ID` = 36
=======================================================
1 - Bitrix\Main\DB\MysqlResult -> 
SELECT 
    `iblock_section_element`.`IBLOCK_SECTION_ID` AS `SID`,
    COUNT(1) AS `CNT`
FROM `b_iblock_section_element` `iblock_section_element` 

GROUP BY `iblock_section_element`.`IBLOCK_SECTION_ID`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment