Пример кода для загрузки параграфов.
В данном примере будем загружать параграфы, связанные с entity commerce_product_variation (это сущность модуля Commerce).
Я привязал информацию по остаткам складов к вариациям в виде параграфов (тип — stocks). Каждый параграф имеет два поля — field_amount и field_sklad — остатки товара и ссылка на таксономию складов.
Нам требуется подсчитать кол-во остатков вариации товара по всем складам.
1 2 3 4 5 6 7 8 9 |
// пусть айди вариации известна $variation_id = 10; // выберем подходящие параграфы $query = \Drupal::entityQuery('paragraph') ->accessCheck(false); $query->condition('type', 'stocks'); $query->condition('parent_type', 'commerce_product_variation'); $query->condition('parent_id', $variation_id); $pr = $query->execute(); |
Переменная $pr теперь представляет собой массив id параграфов. Нужно запросить данные, пройтись по массиву и подсчитать общее кол-во остатков на складе.
1 2 3 4 5 6 7 8 |
$stocks = \Drupal::entityTypeManager() ->getStorage('paragraph') ->loadMultiple($pr); $total = 0; foreach($stocks as $stock) { $total += $stock->field_amount->value; } |
Итого, в $total мы получили нужное нам значение.