51  /  359

Групповые действия

Просмотров: 496 (Статистика ведётся с 06.02.2017)
Татьяна Старкова
Сложность урока:
4 уровень - сложно, требуется сосредоточится, внимание деталям и точному следованию инструкции.
1
2
3
4
5
  • fill

    Коллекционная операция fill является прекрасной альтернативой аналогичной операции в Объекте, выполненной в цикле. В случае с циклом количество запросов к базе данных будет равно количеству объектов:

    /** @var \Bitrix\Main\Test\Typography\Book[] $books */
    $books = [
    	\Bitrix\Main\Test\Typography\Book::wakeUp(1),
    	\Bitrix\Main\Test\Typography\Book::wakeUp(2)
    ];
    
    foreach ($books as $book)
    {
    	$book->fill();
    	// SELECT ... WHERE ID = ...
    	// так делать не надо!
    }

    В случае же с коллекцией запрос будет только один:

    $books = new \Bitrix\Main\Test\Typography\Books;
    // или $books = \Bitrix\Main\Test\Typography\BookTable::createCollection();
    
    $books[] = \Bitrix\Main\Test\Typography\Book::wakeUp(1);
    $books[] = \Bitrix\Main\Test\Typography\Book::wakeUp(2);
    
    $books->fill();
    // SELECT ... WHERE ID IN(1,2)
    

    Как и в случае с объектами, в качестве параметров в fill можно передавать массив имен полей для заполнения или маску типа:

    $books->fill(['TITLE', 'PUBLISHER_ID']);
    $books->fill(\Bitrix\Main\ORM\Fields\FieldTypeMask::FLAT);

    Более подробно возможные значения параметра описаны в fill Объектов.

  • get*List

    Не самый редкий сценарий - получить из результата запроса список значений отдельного поля. В обычном случае это может выглядеть так:

    $books = \Bitrix\Main\Test\Typography\BookTable::getList()
    	->fetchCollection();
    
    $titles = [];
    
    foreach ($books as $book)
    {
    	$titles[] = $book->getTitle();
    }

    Именованный групповой "геттер" позволяет сократить такой цикл до одной строчки кода:

    $books = \Bitrix\Main\Test\Typography\BookTable::getList()
    	->fetchCollection();
    
    $titles = $books->getTitleList();

    Такие "геттеры" доступны для всех полей сущности и описываются в аннотациях для IDE.



1
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии