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.
Любая помощь будет признательна! Спасибо!
2 answers
Заменить
->addFilter('store_id', $this->followUpEmailHelper->getStore(), 'eq')
С
->addFilter('store_id', $this->followUpEmailHelper->getStore()->getId(), 'eq')
Если вы хотите передать несколько идентификаторов магазина для фильтрации, вы можете использовать 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();