https://github.com/areal-team/bx-data
Удобные классы для 1C-Bitrix.
https://github.com/areal-team/bx-data
1c-bitrix bitrix bitrix-cms bitrix-module data highload
Last synced: 20 days ago
JSON representation
Удобные классы для 1C-Bitrix.
- Host: GitHub
- URL: https://github.com/areal-team/bx-data
- Owner: areal-team
- License: mit
- Created: 2016-11-04T07:38:31.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2020-05-08T14:42:57.000Z (over 5 years ago)
- Last Synced: 2025-09-04T22:21:28.165Z (5 months ago)
- Topics: 1c-bitrix, bitrix, bitrix-cms, bitrix-module, data, highload
- Language: PHP
- Homepage:
- Size: 151 KB
- Stars: 24
- Watchers: 7
- Forks: 14
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Удобные классы для доступа к данным в 1C-Bitrix одинаковым способом
[](https://travis-ci.org/aak74/bx-data)
[](https://packagist.org/packages/aak74/bx-data)
[](https://packagist.org/packages/aak74/bx-data)
[](https://packagist.org/packages/aak74/bx-data)
Вне зависимости от того инфоблок это или highload блок.
* Вам больше не нужно помнить какой ID у инфоблока.
* Вам больше не
нужно писать кучу строк для получения элементарных данных из highload
блока.
## Использование
Для получения списка моделей авто достаточно написать:
```php
$models = new \App\Catalog\Model;
$result = $models->getList();
```
В переменной $result вы получаете массив моделей. Больше никаких циклов, никаких GetNext, Fetch и прочего.
### Выборка с фильтром, сортировкой и ограничением полей:
```php
$models = new \App\Catalog\Model;
$result = $models->getList([
"select" => ["id", "name", "brandId", "brandName"],
"filter" => ["brandId" => 120],
"order" => ["name" => "asc"],
]);
```
#### В БД уйдет один запрос вида:
```sql
SELECT
`model`.`ID` AS `ID`,
`model`.`UF_NAME` AS `UF_NAME`,
`model`.`UF_BRAND` AS `UF_BRAND`,
`model_brandname_`.`UF_NAME` AS `brandName`
FROM `b_hlbd_auto_model` `model`
LEFT JOIN `b_hlbd_auto_brand` `model_brandname_` ON `model`.`UF_BRAND` = `model_brandname_`.`ID`
WHERE `model`.`UF_BRAND` = 120
AND (`model`.`UF_DELETED` IS NULL OR `model`.`UF_DELETED` = 0)
ORDER BY `model`.`UF_NAME` ASC
```
### Выборка с фильтром по значению в справочнике, сортировкой и ограничением полей:
```php
$models = new \App\Catalog\Model;
$result = $models->getList([
"select" => ["id", "name", "brandId", "brandName"],
"filter" => ["brandName" => "renault"],
"order" => ["name" => "asc"],
]);
```
#### В БД уйдет один запрос вида:
```sql
SELECT
`model`.`ID` AS `ID`,
`model`.`UF_NAME` AS `UF_NAME`,
`model`.`UF_BRAND` AS `UF_BRAND`,
`model_brandname_`.`UF_NAME` AS `brandName`
FROM `b_hlbd_auto_model` `model`
LEFT JOIN `b_hlbd_auto_brand` `model_brandname_` ON `model`.`UF_BRAND` = `model_brandname_`.`ID`
WHERE UPPER(`model_brandname_`.`UF_NAME`) like upper('renault')
AND (`model`.`UF_DELETED` IS NULL OR `model`.`UF_DELETED` = 0)
```
Вы можете сказать:
Highload блоки могут сделать тоже самое. Пусть и несколько более многословно.
Да конечно. Только стоит вспомнить сколько нужно написать в классе описания сущности представляемым highload блоком. И сразу не хочется этого делать.
Сравните что нужно написать сейчас:
```php
namespace App\Catalog;
class Model extends \Akop\Element\HlElement
{
protected $entityName = 'Model';
}
```
Это весь текст класса. **ВЕСЬ**. Все остальное сделано за вас.
## Установка
Установка происходит стандартным для [composer](http://getcomposer.org/) способом:
```
composer require aak74/bx-data
```
[Демосайт](http://demo.gbdev.xyz/)