Magento 2.3.0 Как добавить фильтр магазина в searchCriteriaBuilder


В моем пользовательском модуле я пытаюсь добавить фильтр магазина в orderRepository с помощью searchCriteriaBuilder, но он выдает ошибку, как показано ниже.

1 исключение(исключения): Исключение #0 (Исключение): Предупреждение: PDO::quote() ожидает, что параметр 1 будет строкой, объект указан в /var/www/html/CE/2.3.0/vendor/magento/zendframework1/library/Zend/Db/Adapter/Pdo/Abstract.php в строке 296

Ниже приведен мой код :

$searchCriteria = $this->searchCriteriaBuilder
    ->addFilter(
        'status', $orderStatus, 'eq'
    )->addFilter(
    'created_at', $date->format('Y-m-d 00:00:00'), 'gteq'
    )->addFilter(
        'created_at', $date->format('Y-m-d 23:59:59'), 'lteq'
    )->addFilter('store_id', $this->followUpEmailHelper->getStore(), 'eq')->create();

    $orderCollection = $this->orderRepository->getList($searchCriteria);

    print_r($orderCollection->getSelect()->__toString());die;

Что не так в приведенном выше коде и как примените фильтр хранилища в коллекции с помощью searchCriteriaBuilder


Обновление :

Ответ Мариуса верен, поскольку моя текущая проблема решена, но я хочу узнать, как получить идентификатор хранилища области. потому что, когда я передаю идентификатор магазина этому фильтру, он всегда возвращается в хранилище 2.

Любая помощь будет признательна! Спасибо!

Author: Chirag Patel, 2019-05-09

2 answers

Заменить

->addFilter('store_id', $this->followUpEmailHelper->getStore(), 'eq')

С

->addFilter('store_id', $this->followUpEmailHelper->getStore()->getId(), 'eq')
 1
Author: Marius, 2019-05-09 13:39:39

Если вы хотите передать несколько идентификаторов магазина для фильтрации, вы можете использовать in для выбора нескольких магазинов.

Итак, ваш код выглядит следующим образом:

$searchCriteria = $this->searchCriteriaBuilder
                        ->addFilter(
                            'status', $orderStatus, 'eq'
                        )->addFilter(
                            'created_at', $date->format('Y-m-d 00:00:00'), 'gteq'
                        )->addFilter(
                            'created_at', $date->format('Y-m-d 23:59:59'), 'lteq'
                        )->addFilter('store_id', $storeIds, 'in')->create();
 2
Author: Himanshu, 2019-05-10 09:16:09