Интерфейсы

CanGetItem

use Pranju\Bitrix24\Contracts\Repositories\CanGetItem;

if ($repository instanceof CanGetItem) {
  $attributes = $repository->get(1);
  // Или
  $attributes = $repository->getReceivedItemAttributes(
    $repository->makeGetCommand(1)->call()
  );
}

CanCreateItem

use Pranju\Bitrix24\Contracts\Repositories\CanCreateItem;

$attributes = [
  'TITLE' => 'Lorem ipsum',
];

if ($repository instanceof CanCreateItem) {
  $id = $repository->create($attributes);
  // Или
  $id = $repository->getCreatedItemId(
    $repository->makeCreateCommand($attributes)->call()
  );
}

CanUpdateItem

use Pranju\Bitrix24\Contracts\Repositories\CanUpdateItem;

$attributes = [
  'TITLE' => 'Lorem ipsum',
];

if ($repository instanceof CanUpdateItem) {
  $isUpdated = $repository->update(1, $attributes);
  // Или
  $isUpdated = $repository->updatedSuccessfully(
    $repository->makeUpdateCommand(1, $attributes)->call()
  );
}

CanDeleteItem

use Pranju\Bitrix24\Contracts\Repositories\CanDeleteItem;

if ($repository instanceof CanDeleteItem) {
  $isDeleted = $repository->delete(1);
  // Или
  $isDeleted = $repository->deletedSuccessfully(
    $repository->makeDeleteCommand(1)->call()
  );
}

CanSelectItems

use Pranju\Bitrix24\Contracts\Repositories\CanSelectItems;

$filter = [
  '>=DATECREATED' => '2024-01-01',
];

if ($repository instanceof CanSelectItems) {
  $items = $repository->select($filter);
  // Или
  $items = $repository->getSelectedItems(
    $repository->makeSeletcCommand($filter)->call()
  );

  /** Подсчёт по фильтру */
  $count = $repository->count($filter);
}

Хоть и все репозитории следуют определённому интерфейсу, они могут иметь некоторые отклонения в формате передаваемых значений.

Например методы get и makeGetCommand в Pranju\Bitrix24\Repositories\Crm\CategoryRepository требуют на вход не просто id категории, а строку вида {entityTypeId}:{id}. Это связано с особенностями REST API Битрикс24.

Чаще всего, Eloquent-обёртка будет выполнять все подобные разночтения за вас, чтобы избежать путаницы, но в случае низкоуровневого использования пакета нужно будет самостоятельно читать комментарии методов, чтобы избежать ошибок.

Last updated