1. Go to this page and download the library: Download beta/bx.data.provider library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
beta / bx.data.provider example snippets
use BX\Data\Provider\IblockDataProvider;
use Data\Provider\Providers\JsonDataProvider;
use Data\Provider\DefaultDataMigrator;
use Data\Provider\QueryCriteria;
use Data\Provider\Interfaces\QueryCriteriaInterface;
use Data\Provider\Interfaces\CompareRuleInterface;
$newsProvider = new IblockDataProvider(
'content', // передаем тип инфоблока
'news' // передаем символьный код инфоблока
);
$newsProvider->setMapperForRead(function (array $data): array { // задаем маппер данных при запросе данных от провайдера
return [
'id' => (int)$data['ID'],
'name' => $data['NAME'],
'code' => $data['CODE'],
'content' => $data['DETAIL_TEXT'],
];
});
$targetJsonProvider = new JsonDataProvider(
$_SERVER['DOCUMENT_ROOT'].'/upload/news.json', // указываем путь к файлу для сохранения
'id' // указываем имя первичного ключа
);
$migrator = new DefaultDataMigrator( // создаем объект для обмена данными
$newsProvider, // источник данных
$targetJsonProvider // приемник данных
);
$queryNews = new QueryCriteria();
$queryNews->addCriteria('ACTIVE', CompareRuleInterface::EQUAL, 'Y'); // сохранять в json файл будем только активные элементы
$exportResult = $migrator->runUpdate(
$queryNews, // передаем фильтр для источника данных
'ID' // здесь указываем либо ключ для сопоставления данных с первичным ключом приемника данных или же анонимную функцию вида function(array $dataItem): QueryCriteriaInterface
);
$exportResult->hasErrors(); // есть ли ошибки
$exportResult->getErrors(); // список ошибок
$exportResult->getSourceData(); // данные для экспорта полученные от источника
$exportResult->getUnimportedDataList(); // данные которые не удалось сохранить в json файл
use BX\Data\Provider\BxQueryAdapter;
use Data\Provider\QueryCriteria;
use Data\Provider\Providers\JsonDataProvider;
use Data\Provider\Interfaces\CompareRuleInterface;
$bxParams = [
'select' => ['NAME', 'CODE', 'ID'],
'filter' => [
'=ACTIVE' => 'Y',
[
'LOGIC' => 'OR',
[
'=NAME' => 'test',
],
[
'=NAME' => 'other',
],
],
],
'limit' => 10,
];
$bxQuery = BxQueryAdapter::initFromArray($bxParams);
$jsonProvider = new JsonDataProvider(
$_SERVER['DOCUMENT_ROOT'].'/users.json', // указываем путь к json файлу
'id' // указываем первичный ключ
);
$jsonProvider->getData($bxQuery->getQuery()); // данные из json файла
$newQuery = new QueryCriteria();
$newQuery->setSelect(['NAME', 'CODE', 'ID']);
$newQuery->setLimit(10);
$compareRule = $newQuery->addCriteria('ACTIVE', CompareRuleInterface::EQUAL, 'Y');
$compareRule->and('NAME', CompareRuleInterface::EQUAL, 'test')
->or('NAME', CompareRuleInterface::EQUAL, 'other');
$newBxQuery = BxQueryAdapter::init($newQuery);
$newBxQuery->toArray(); // результат будет аналогичен $bxParams
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.