PHP code example of alexpago / bitrix-models

1. Go to this page and download the library: Download alexpago/bitrix-models 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/ */

    

alexpago / bitrix-models example snippets


#!/usr/bin/env php

declare(strict_types=1);
$_SERVER['DOCUMENT_ROOT'] = str_replace('/bin', '', getenv('PWD'));

 bin/model iblock



namespace Pago\Bitrix\Models\Models\Catalog;

use Bitrix\Iblock\ORM\ValueStorage;
use Bitrix\Main\ORM\Objectify\Collection;
use Pago\Bitrix\Models\IModel;

/**
 * Для вызова методов getProperty и получения значения используйте метод getValue()
 * @method ValueStorage getCml2Service() // Привязка к услуге
 * @method Collection getIncludedInPrice() // Что входит в стоимость
 * @method ValueStorage getAppName() // Название (для приложения)
 * @method Collection getSalons() // Салоны
 * @method $this whereCml2Service(mixed $data, string $operator = '') // Привязка к услуге
 * @method $this whereIncludedInPrice(mixed $data, string $operator = '') // Что входит в стоимость
 * @method $this whereAppName(mixed $data, string $operator = '') // Название (для приложения)
 * @method $this whereSalons(mixed $data, string $operator = '') // Салоны
 */
class CertificatesServices extends IModel
{

}



namespace Pago\Bitrix\Models\Models\Catalog;

use Pago\Bitrix\Models\IModel;

class CertificatesServicesModel extends IModel
{
    const IBLOCK_CODE = 'certificates_services';
}



namespace Pago\Bitrix\Models\Models\Catalog;

use Pago\Bitrix\Models\IModel;

class CertificatesServicesModel extends IModel
{
    const IBLOCK_ID = 3;
}

$elements = CertificatesServices::query()->withProperties()->get(); // get() вернет массив элементов
foreach ($elements as $element) {
    
}

CertificatesServices::query()->setFilter(['CODE' => 'massage'])->setLimit(10)->get();

CertificatesServices::query()
    ->withProperties()
    ->whereCityId(1)
    ->orWhere('CITY_ID', 2)
    ->whereIblockSectionId(10)
    ->whereId(5, '>=') // по умолчанию всегда оператор = (равно), заполнять при необходимости указать другой
    ->get();

CertificatesServices::query()->whereId(100)->first(); // first() вернет экземпляр класса

CertificatesServices::query()->withProperties()->get();

// SALONS и CITY - свойства инфоблока. Обратите внимание, префикс PROPERTY указывать не нужно
CertificatesServices::query()->setSelect(['ID', 'CODE', 'NAME', 'SALONS', 'CITY'])->get();

// SALONS и CITY - свойства инфоблока. Обратите внимание, префикс PROPERTY указывать не нужно
CertificatesServices::query()->select('ID')->select('CODE', 'NAME')->get();

// SALONS и CITY - свойства инфоблока. Обратите внимание, префикс PROPERTY указывать не нужно
CertificatesServices::query()->withProperties()->select('ID')->select('CODE', 'NAME')->get();

// SALONS и CITY - свойства инфоблока. Обратите внимание, префикс PROPERTY указывать не нужно
$element = CertificatesServices::query()->withDetailPageUrl()->select('ID')->first();
$element->getDetailPageUrl();

// SALONS и CITY - свойства инфоблока. Обратите внимание, префикс PROPERTY указывать не нужно
CertificatesServices::query()->where('ID', '>=', 1)->count();

CertificatesServices::query()->setOrder(['ID' => 'ASC'])->get(); 

CertificatesServices::query()->order('ID')->orderDesc('NAME')->get(); 

$elements = CertificatesServices::query()->withCache(3600, true)->get();

$elements = CertificatesServices::query()->withProperties()->get();
foreach ($elements as $element) {
    // Свойство SALONS множественное
    // Экземпляр класса Bitrix\Main\ORM\Objectify\Collection
    $salons = $element->getSalons();
    foreach ($salons as $salon) {
        $salon->getValue();
    }
    // Свойство CITY не множественное
    // Экземпляр класса Bitrix\Iblock\ORM\ValueStorage
    $city = $element->getCity()->getValue();
}

$elements = CertificatesServices::query()->get();
foreach ($elements as $element) {
    $result = $element->toArray();
}

$element = CertificatesServices::query()->withProperties()->first();
// Массив с результатом [Bitrix\Main\ORM\Data\Result]
$element->delete();
// Для получения результата в bool
$element->elementDelete();

// Массив с результатом [Bitrix\Main\ORM\Data\Result]
$delete = CertificatesServices::query()->withProperties()->whereActive(false)->delete();

$element = CertificatesServices::query()->withProperties()->first();
$element->NAME = 'Новое имя';
$element->SALON_ID = 135; // Свойство инфоблока SALON_ID
// Результат сохранения Bitrix\Main\ORM\Data\Result
$element->save();

$element = CertificatesServices::query()->withProperties()->first();
// Массив с результатом [Bitrix\Main\ORM\Data\Result]
$element->update([
    'NAME' => 'Новое имя'
]);
// Результат запроса Bitrix\Main\ORM\Data\Result
$element->elementUpdate([
    'NAME' => 'Новое имя 2'
]);

$data = [
    'ACTIVE' => true
];
// Массив с результатом [Bitrix\Main\ORM\Data\Result]
$delete = CertificatesServices::query()->withProperties()->whereActive(false)->update($data);

$element = new CertificatesServices();
$element->NAME = 'Имя нового элемента';
// Результат сохранения Bitrix\Main\ORM\Data\Result
$element->save();

/**
 * Событие вызываемое перед добавлением элементам
 * @return void
 */
protected function onBeforeAdd(): void
{
    // actions
}

/**
 * Событие вызываемое после добавление элемента
 * @param \Bitrix\Main\ORM\Data\Result $result
 * @return void
 */
protected function onAfterAdd(Result $result): void
{
    // actions
}

/**
 * Событие вызываемое перед обновлением элемента
 * @return void
 */
protected function onBeforeUpdate(): void
{
    // actions
}

/**
 * Событие вызываемое после обновления элемента
 * @param \Bitrix\Main\ORM\Data\Result $result
 * @return void
 */
protected function onAfterUpdate(Result $result): void
{
    // actions
}

/**
 * Событие вызываемое перед удалением элемента
 * @return void
 */
protected function onBeforeDelete(): void
{
    // actions
}

/**
 * Событие вызываемое после удаления элемента
 * @param \Bitrix\Main\ORM\Data\Result $result
 * @return void
 */
protected function onAfterDelete(Result $result): void
{
    // actions
}

protected function onBeforeUpdate(): void
{
    $data = $this->getProperties(); // Текущие свойства
    $originalData = $this->getOriginalProperties(); // Свойства при инициализации модели
    $changedData = $this->getChangedProperties(); // Измененные свойства
    // Можно предопределить данные
    $this->NAME .= ' Обновлено';
}