タグ付けされた質問 「resource-model」

3
Magento 2でカスタムモジュールのサービスコントラクトを実装する方法
この記事で見られるように:非推奨に保存し、抽象モデルの負荷メソッドsaveとloadメソッドはMagentoの2に廃止されましたが、分岐を開発しています。 したがって、CRUDエンティティを処理するサービスコントラクトを実装することをお勧めします。 カスタムモジュールエンティティのサービスコントラクトを実装するために必要なステップバイステッププロセスは何ですか? NB:私のCRUDモデルには数千のメソッドが存在する可能性があることを知っています。ここに記載されているように、明らかなメソッドを求めています:http : //devdocs.magento.com/guides/v2.0/extension-dev-guide /service-contracts/design-patterns.html: get save getList delete deleteById

5
Mage_Catalog_Model_Resource_Product_CollectionにストアIDを設定する方法は?
タスクは簡単です。フラットカタログを有効にして、特定のストアビューの製品のリストを取得する必要があります。最も明白な解決策は次のとおりです。 $collection = Mage::getResourceModel('catalog/product_collection') ->setStore($storeId); 実際、setStore()メソッドはストアIDに基づいてフラットテーブルの名前を取得する_initSelect()メソッドの後に呼び出されるため、ここでは何の違いもありませんMage_Catalog_Model_Resource_Product_Collection。ストアIDはまだ設定されていないため、現在のストアIDが使用されます。 したがって、明らかな回避策は、モデルを取得する前に現在のストアIDを設定することです。 Mage::app()->setCurrentStore($storeId); $collection = Mage::getResourceModel('catalog/product_collection'); それが動作します。ただし、コレクションを1回取得する必要がある場合のみ。ループ内でコレクションを取得する必要がある場合、または2つのバックツーバックコレクションだけが必要な場合は、コレクションに特定のストアを設定できません。 その理由は Mage_Catalog_Model_Resource_Product_Flatクラスには独自の_storeIdプロパティがあり、コンストラクターでは現在のストアIDに設定されるためです。それが最初に設定される理由です。それから、何らかの理由で(天国は私が希望していることを知っていMage_Eav_Model_Entity_Collection_Abstract::_initます)、各リソースモジュールはシングルトンとしてフェッチされます。したがって、2回目の呼び出しのコンストラクタはありません。 これはすべて非常に間違っているように見えるので、私は間違っていると確信しており、Magentoの別のバグ(または2つ)ではありません。誰かがそれに光を当てることを願っています。

1
コレクションモデルとリソースモデルについて
リソースモデルとコレクションモデルの使用について少し混乱しています。特定の属性を使用して製品をロードする例を見ると、コレクションモデルを使用する場合もあれば、リソースモデルを使用する場合もあります。 また、特定の方法get...とset...テーブル行名をいつ使用できますか?のようgetNameにgetId。私は使用しようとしましたが、値を取得できず、「オブジェクトの未定義のメソッドを呼び出しています」というエラーが表示されます $product = Mage::getModel('catalog/product') ->loadByAttribute('name', 'product_name'); echo $product->getName(); echo $product->getSku(); 「未定義のメソッドgetSku()」を示しています を使用するとvar_dump($product)、オブジェクトにSKUが表示されますが、SKUを取得できませんgetSku()...

5
インストールスクリプトでの$ installer v $ thisの使用
わかりました、インストールスクリプトを使用して、以下を使用する奇妙な規則があるようです: $installer = $this; これは完全に冗長であるため、私は本当に理解していません。 $this->スクリプト全体で使用しないのはなぜですか? この規則が存在する理由に関するアイデアはありますか?

1
多対多の関係を作成するためのMagento 2のベストプラクティスの方法は何ですか?
私はコアを見渡して、モデル間の多対多の関係のいくつかの例を見てきましたが、これに関する明確な答えを見ることができません。 例として、新しいモデルを作成し、既存の製品テーブルと多対多の関係を持ちたいとします。 新しいモデル-Stockistがあり、2つのテーブルを作成します。1つはStockist名を格納し、もう1つは製品との多対多の関係を格納します。 セットアップクラスの短縮バージョン: $table = $setup->getConnection() ->newTable($installer->getTable('stockist')) ->addColumn('stockist_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Stockist Id') ->addColumn('name', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, null, ['nullable' => false], 'Stockist Name'); $table = $installer->getConnection() ->newTable($installer->getTable('stockist_product')) ->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], …



2
`number = number-1`のように設定するのではなく、値を減らします。Magentoで可能ですか?
アトミックデータベース操作で値をデクリメントする必要があります。Magentoモデルを使用して可能ですか? setNumber($number)のようnumber = $numberに動作しますが、SQLクエリでデクリメントする必要があります。 Magentoで可能ですか、それともSQLクエリを自分で作成する必要がありますか?

2
リソースモデルを書き換えるときに非推奨の「Mysql4」クラスを処理する方法
書き直さなければならないMage_Catalog_Model_Resource_Category_Flat。 古いリソースクラスMage_Catalog_Model_Resource_Eav_Mysql4_Category_Flatは、下位互換性のためにMagento 1.7に引き続き存在し、新しいリソースクラスを拡張します。 完全なモデルエイリアスをコードベースで検索してresource_eav_mysql4_category_flatも、結果は得られませんでした。しかし、config.xmlMage_Catalogの次の行が含まれています。 <deprecatedNode>catalog_resource_eav_mysql4</deprecatedNode> また、どこでどのようdeprecatedNodeに使用されているのかわかりません。 このようなリソースモデルを書き換えるときに予想される困難は何ですか?両方のクラスを書き直す必要がありますか?または、mysql4クラスを安全に無視できますか?

4
特別オファーで製品のカテゴリを取得する
特別オファーのすべての製品のカテゴリのリストを取得するにはどうすればよいですか。それは少しトリッキーです。以下を使用して製品のリストを取得できます。 $collection ->addAttributeToFilter( array( array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')), array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null')) ) ) ->addAttributeToFilter('news_from_date', array('or'=> array( 0 => array('date' => true, 'to' => $todayEndOfDayDate), 1 => array('is' => new Zend_Db_Expr('null'))) ), 'left') ->addAttributeToFilter('news_to_date', array('or'=> array( 0 => array('date' => true, 'from' => $todayStartOfDayDate), 1 => …

3
$ Status-> save()を呼び出さなくても、StatusHistoryCommentを注文することができますか?
$ order-> save()イベントをディスパッチしたくないので、これが必要です。私は何かしたいです$order->_getResource()->saveAttribute($order, 'statusHistoryComment'); 私はどんな考えでも喜んでいます:) UPD:saveAttributeEAVモデルのみで作業しているようです。フラットはどうですか?

2
Block関数がResourceModel関数を呼び出すことはベストプラクティスですか?
Blockクラスが、Modelクラスではなく、ResourceModelクラスの関数を介してデータを取得することは適切ですか? または、ブロックはモデルを呼び出し、次にリソースモデルに呼び出しを渡す必要がありますか? BlockからResourceModelに直接移動するのが最も簡単で、考えられるかなりの数の関数の重複を回避できますが、それは悪い形式であり、ベストプラクティスのパターンを壊すと思いますか?

1
コレクションのカスタムソート順
画像に示すように、「id」ではなく「sort_order」フィールドに基づいてコレクションをソートする必要があります。 $collection=Mage::getResourceModel('banners/manage_collection'); $collection->getSelect()->order('sort_order','DESC'); そして 私はこれを試しましたが、常にidフィールドに基づいてコレクションを返します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.