質問

Magento2では、コレクションの代わりにリポジトリを使用する必要があります。理解していないのは、リポジトリにカスタム属性を追加する方法です。

私がこのようなことをするならば:

    $searchCriteria = $this->searchCriteriaBuilder
        ->addFilter(ProductInterface::STATUS, Status::STATUS_ENABLED)
        ->addFilter(ProductInterface::VISIBILITY, array(Visibility::VISIBILITY_IN_SEARCH, Visibility::VISIBILITY_BOTH), 'in')
        ->create();

    $products = $this->productRepositoryInterface->getList($searchCriteria);
.

私は製品のリストを持っていますが、私は必要なすべての属性を持っていません。 どのようにこれを達成できますか?Magento 1のaddAttributeToSelectのようなもの1。

役に立ちましたか?

解決

私たちはコレクションの代わりにリポジトリを使わなければならないことを理解しました

必ずしもそうしない。

AFAIK、あなたがMagento 2サービス契約を遵守するリポジトリを使用すると、サービスインタフェースとデータインタフェースが定義されている(ただしサードパーティのモジュールによって拡張可能)。

実行時に可能なことを可能にして、コールの結果をリポジトリのgetList()メソッドに変更すると、この契約に違反します。

実行時に必要な属性を取得するには、コレクションを使用できます。 Magento 2フレームワーク自体がコレクションを多用しています。

それ以外の場合は、そのエンティティの新しいデータインターフェイス(つまり、新しい属性セット)を定義するモジュールを実装する必要があります。

いくつかの光を当てることを願っています。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top