У меня есть расширение с атрибутом, назначенным order items
вызываемым warehouse
.
Я могу видеть этот атрибут под свойством " extension_attributes
".
Мне нужно отфильтровать заказы на основе этого атрибута. Я не могу найти документацию о том, как это сделать.
Пример фрагмента ответа API:
[items] => Array(
[0] => Array(
[extension_attributes] => Array(
[warehouse] => MyWarehouse
)
)
)
Следующий фильтр генерирует внутреннюю ошибку:
searchCriteria[filter_groups][2][filters][0][field]=warehouse,searchCriteria[filter_groups][2][filters][0][value]=mywarehouse,searchCriteria[filter_groups][2][filters][0][condition_type]=eq
Любые предложения о том, как я могу фильтровать заказы, используя атрибут хранилища через API
?
- Дополнительное замечание по этому вопросу:
В этом случае, если мы будем следить за блогом Fooman. Затем мы можем отфильтровать коллекцию по атрибуту extension * ?
- Фильтр коллекции по этому расширению Атрибут Должен быть запущен быстро?
- Если мы используем пользовательскую таблицу БД для сохранения этой таблицы атрибутов расширения, то как это сделать? Должен ли он работать фронтенд magento и backend также.
- где нужно сделать модификацию и какой класс нужно добавить или какой-нибудь ссылочный блог?
Ждать добра и описать / краткий ответ по этому пункту?
Module>/etc/extension_attributes.xml
?Ответы:
Вы можете попробовать это
источник
Вместо этого searchCriteria не фильтрует результаты из ответа API вместо этого из db / collection, если пользовательские атрибуты в extension_attribute не доступны в базе данных как столбец таблицы, из которой выбираются данные, в ответ они не поступят.
Например, Я делаю следующий вызов API -
Тогда, поскольку в таблице sales_order нет столбца с именем random (из которого API получает ответ), я получаю следующую ошибку;
Итак, если вам нужно вызывать ваши пользовательские данные в API, которые вы должны сохранить в соответствующей таблице в новом столбце, то вы можете вызывать их, как правило, используя имя столбца в качестве подходящего поля и значение в качестве желаемого значения, как показано ниже;
Я сам это проверил, надеюсь, у тебя тоже самое будет.
источник
На момент написания этого (Magento 2.2) я не думаю, что есть способ фильтровать атрибуты расширения. Хотя они присутствуют в основной коллекции,
select
если вы определяете<join>
inextension_attributes.xml
, кажется, что вы не можете фильтровать ее.Разработчик расширения должен предоставить способ фильтрации значений атрибута расширения. Вы можете увидеть пример в модуле платежей Amazon: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51
В этом плагине вы можете увидеть, как они ожидают, что таблица уже будет объединена (как это определено в
extension_attributes.xml
), но примените фильтр вручную.источник
@AmitBera Я не уверен на 100% в этом, и он не дает ответа на все ваши вопросы, но я думаю, что сначала вам нужно сначала использовать JoinProcessor для поиска критериев, а затем использовать файлер. Вы можете узнать больше о том, как это сделать, на этом http://devdocs.magento.com/guides/v2.2/extension-dev-guide/searching-with-repositories.html
источник