タグ付けされた質問 「collection」

Magentoコレクションに関する質問

3
Magento 2:コレクションクエリからフィールドを選択
以下のクエリがあります。すべてではなく、テーブルから1つのフィールドのみを選択します。 $collection = $this->_collectionFactory->addFieldToFilter('status', 0)->load(); //$collection->getSelect()->column('id'); //$collection->getSelect()->from(['main_table' => $this->getMainTable()], array('main_table.id')); echo $collectionBallotSelect->getSelect()->__toString(); exit; idテーブルからフィールドのみを選択したい。

1
コレクションの `joinField`と` joinTable`の違いは何ですか?
このファイルapp/code/core/Mage/Eav/Model/Entity/Collection/Abstract.phpには、という名前の関数があり、joinField別の関数がありますjoinTable。 フィールドが実際にフラットテーブルの列である場合、それらを結合するとはどういう意味ですか?joinTable代わりにどのような状況で使用する必要がありますか?両方を交換して使用できますか?

2
Magento 2:コレクションの別の方法の取得フィールド
私はMagento 2にこのヘルパークラスを持っています: class Data extends \Magento\Framework\App\Helper\AbstractHelper { protected $_countryFactory; public function __construct( \Magento\Directory\Model\CountryFactory $countryFactory ) { $this->_countryFactory = $countryFactory; } public function getCountryIsoCode($country = 'US') { $country = $this->_countryFactory->create()->getCollection(); $country->addFieldToFilter('country_id', array('eq' => country)); $countryCode = $country->getFirstItem()->getIso3Code()); $countryCode2 = $country->getFirstItem()->getData('iso3_code')); // $countryCode => null // $countryCode2 => 'USA' return $countryCode; } …

2
「SELECT DISTINCT attribute FROM products」に相当するMagento ORMとは何ですか?
(疑似)SQLで、特定の製品属性に使用されるすべての値のリストを取得する必要があります。 SELECT DISTINCT attribute FROM products; Magento ORMを使用して同等のクエリを生成するにはどうすればよいですか?distinct()関数を試してみましたが、期待どおりに動作しません。 // Returns an array of NULL with a length equal to all products in the catalog Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect('attribute') ->distinct(true) ->getColumnValues('attribute'); 私が取得しようとしているのはattribute、重複のない値の配列です array('some value', 'some other value', 'a really common value', 'etc...');

2
addAttributeToSelectがcore / resource_iteratorで機能しない?
public function run() { $products = Mage::getModel('catalog/product') ->getCollection() ->addFinalPrice() ->addAttributeToSelect('name') Mage::getSingleton('core/resource_iterator') ->walk($products->getSelect()->limit(10), array(array($this, 'getLine'))); } public function getLine($args) { var_dump($args['row']); } 私のgetLine()方法では私は何も得ませんnameがaddFinalPrice()機能します: array(16) { ["entity_id"]=> string(2) "61" ["entity_type_id"]=> string(1) "4" ["attribute_set_id"]=> string(2) "10" ["type_id"]=> string(6) "simple" ["sku"]=> string(15) "50-F01010001-03" ["has_options"]=> string(1) "0" ["required_options"]=> string(1) "0" ["created_at"]=> string(19) "2011-07-05 18:30:48" ["updated_at"]=> …

1
Magentoカスタマーグリッドの_prepareCollection()オーバーライドが機能しない
Mage_Adminhtml_Block_Customer_Gridの_prepareCollection()メソッドをオーバーライドして、次の行を追加しました ->addAttributeToSelect('cus_city') ->addAttributeToSelect('cus_country') ->addAttributeToSelect('cus_state') に: protected function _prepareCollection() { $collection = Mage::getResourceModel('customer/customer_collection') ->addNameToSelect() ->addAttributeToSelect('email') ->addAttributeToSelect('created_at') ->addAttributeToSelect('group_id') ->addAttributeToSelect('cus_city') // added ->addAttributeToSelect('cus_country') // added ->addAttributeToSelect('cus_state') // added ->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left') ->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left') ->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left') ->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left') ->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left'); …

2
発送可能な注文の集まりを取得するにはどうすればよいですか?
まだ発送されていない、または一部発送されている注文が必要です。以下のコードを使用して、出荷可能な注文を取得しています。 foreach ($orderIds as $orderId) { $order = Mage::getModel('sales/order')->load($orderId); if ($order->canShip()) { echo "Shipping Pending"; } } しかし、私はforeachを使いたくありません。以下のようなものが必要です。 Mage::getModel('sales/order')->getCollection() ->addFieldToFilter('status','can_ship');

2
コレクション-複数の複数選択属性値のフィルタリング
それはタイプミスではありません。 複数選択属性をフィルター処理するには 'finset'を使用する必要があることを認識しています。しかし、私は一度に複数の値をフィルタリングして、以下を取得しようとしています: Incorrect parameter count in the call to native function 'FIND_IN_SET。 ここにいくつかのサンプルコードがあります: foreach ($options as $option) { // $option[0] contains an attribute ID as a string $attribute = Mage::getModel('catalog/resource_eav_attribute')->load($option[0]); if ($attribute->getFrontendInput() == 'multiselect') { $collection->addAttributeToFilter($attribute->getAttributeCode(), array('finset' => $option[1])); } else { $collection->addAttributeToFilter($attribute->getAttributeCode(), array('in' => $option[1])); } } フロントエンドにあるのはフィールドのセットです。各セットは特定の属性に対応し、各属性値のチェックボックスが含まれています。これらの提出に基づいて、コレクションは選択されたものを除外する必要があります。 …

3
Magento2:別のフィールドによるモデルデータの読み込み
「メッセージ」という名前のテーブルを以下に示します。 id | posts_id | message_description | created_at ----------------------------------------------------------------------------- 1 1 test1 2016-09-06 10:00:00 2 1 test2 2016-09-06 11:00:00 3 2 test1 2016-09-06 10:00:00 4 2 test2 2016-09-06 11:00:00 app \ code \ Custom \ Module \ Block \ Edit.php $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $messages = $objectManager->create('Custom\Module\Model\Messages')->loadByPostsId($this->getRequest()->getParam('id')); return $messages; posts_idでメッセージを取得したいと思います。どうすれば入手できますか?

2
Magento 2:コレクションをウォークスルーして削除する
Magento 2のコレクションを調べ、データベースからエントリを削除する方法があるかどうか疑問に思っていました。 Magento 1では、これは次のようなことで実現できます。 Mage::getModel('foo/bar')->getCollection() ->addFilter('baz', $filter) ->walk('delete') Magento 2で同様のことを達成する方法はありますか?

3
magentoコレクションに動的フィールドを追加するにはどうすればよいですか?
緯度経度からの距離を計算するために、このようなマゼンタコレクションを1つ作成しました。 $collection = Mage::getModel('module/module')->getCollection()->addFieldToFilter('status',1); $collection->getSelect()->columns(array('distance' => new Zend_Db_Expr("( 6371 * acos( cos( radians(23.0130648) ) * cos( radians( latitude ) ) * cos( radians( longitude) - radians(72.4909026) ) + sin( radians(23.0130648) ) * sin( radians( latitude ) ) ) )"))) ->having('distance <10') ->order('distance ' . Varien_Db_Select::SQL_ASC); しかし、SQLSTATE [42S22]エラーが発生します:列が見つかりません:1054 'having句'の列 'distance'が不明です。 コレクションオブジェクトを印刷すると距離計算が正しいです。それで問題は何でしたか? …

5
Magento 2のルートカテゴリとそのすべてのサブカテゴリで製品コレクションを取得しますか?
ルートコレクションおよびそのすべてのサブカテゴリから製品コレクションを取得するにはどうすればよいですか? 例えば: ルートカテゴリ(2製品) サブカテゴリ1(2製品) サブカテゴリ2(3製品) したがって、コレクション内の7つの製品をすべて取得したいと考えています。

4
magento 2でコレクションを取得するための最良の方法はどれですか
カスタムモジュールを作成しています。これは、コレクションを取得するための好ましい方法です。これらの方法の長所と短所を知る必要がありますか? objectManager $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection'); $productCollection->load(); 工場 protected $_productCollectionFactory; public function __construct( \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory, array $data = [] ) { $this->_productCollectionFactory = $productCollectionFactory; parent::__construct($data); } public function getProductCollection() { /** @var $collection \Magento\Catalog\Model\ResourceModel\Product\Collection */ $collection = $this->_productCollectionFactory->create(); return $collection; }

2
Magento:膨大な受注コレクションをフィルタリング
大量の販売注文をフィルタリングしようとしています。その中に500万以上のレコードがあります。以下は注文コレクションを取得するためのコードです。また、目的の列を取得するためにいくつかの結合を配置します $resource = Mage::getSingleton('core/resource'); $collection = Mage::getResourceModel('sales/order_grid_collection'); $collection ->join( 'sales/order_item', '`sales/order_item`.order_id=`main_table`.entity_id', array( 'skus' => new Zend_Db_Expr('GROUP_CONCAT(`sales/order_item`.sku SEPARATOR "</br>")'), ) ); $collection->getSelect()->joinLeft(array('sfog' => $resource->getTableName('sales_flat_order_grid')), 'main_table.entity_id = sfog.entity_id',array('sfog.shipping_name','sfog.billing_name')); $collection->getSelect()->joinLeft(array('sfo'=> $resource->getTableName('sales_flat_order')), 'sfo.entity_id=main_table.entity_id',array('sfo.customer_email','sfo.weight', 'sfo.discount_description','sfo.increment_id','sfo.store_id','sfo.created_at','sfo.status', 'sfo.base_grand_total','sfo.grand_total')); $collection->getSelect()->joinLeft(array('sfoa'=> $resource->getTableName('sales_flat_order_address')), 'main_table.entity_id = sfoa.parent_id AND sfoa.address_type="shipping"',array('sfoa.street', 'sfoa.city','sfoa.region','sfoa.postcode','sfoa.telephone','sfoa.fax')); addAttributeToFilterこのコレクションに関数を適用すると、結果を取得するのに10分かかります。私の質問は、コレクションをフィルタリングする効率的かつ高速な方法があるということです 更新 以下は私のフィルターロジックです。別のフィルターを使用して注文を検索したい $email = Mage::app()->getRequest()->getParam('email'); $phone = Mage::app()->getRequest()->getParam('phone'); $postcode = …

1
すべての製品のデフォルト値をカスタム属性に設定します
管理パネルからのcustom attribute (test)テキストフィールドとしてfor製品を作成しましたdefault value('test') そして、その属性をデフォルトの属性セットに割り当てました。 これで、製品の編集ページで新しいカスタム属性を確認できます。 製品コレクションでフィルタリングしようとすると Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect('*') ->addAttributeToFilter('test', array('like' => 'test'))->getData(); 空の配列を返します。 私の質問は: インストーラースクリプトを使用して属性にデフォルト値を設定する方法はありますか? デフォルト値がその属性に設定されていないのはなぜですか? すべての製品にデフォルト値を追加する方法はありますか?私の店には10,000以上の商品があります。 注意 : 製品コレクション全体をロードして、各製品の値を設定したくありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.