Magento 2 product custom attribute source_model outerset attribute not showing in product collection and not...












0















I am creating a custom product attribute in Magento 2 by custom module InstallData.php code following



    <?php
namespace AwaBrand\Setup;

use MagentoEavSetupEavSetupFactory;
use MagentoFrameworkSetupInstallDataInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupModuleDataSetupInterface;

class InstallData implements InstallDataInterface
{
/**
* EAV setup factory
*
* @var MagentoEavSetupEavSetupFactory
*/
private $eavSetupFactory;

/**
* Constructor
*
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(
EavSetupFactory $eavSetupFactory
) {
$this->eavSetupFactory = $eavSetupFactory;
}

/**
* {@inheritdoc}
*/
public function install(
ModuleDataSetupInterface $setup,
ModuleContextInterface $context
) {
$setup->startSetup();

$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);


$eavSetup->addAttribute(
MagentoCatalogModelProduct::ENTITY,
'awa_brand',
[
'type' => 'int',
'backend' => '',
'frontend' => '',
'label' => 'Attribute Select',
'input' => 'select',
'class' => '',
'source' => 'AwaBrandModelConfigSourceOptions',
'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_STORE,
'visible' => true,
'required' => true,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => false,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => ''
]
);

$setup->endSetup();
}
}


and source Module is bellow



    <?php 
namespace AwaBrandModelConfigSource;

class Options extends MagentoEavModelEntityAttributeSourceAbstractSource
{
/**
* to option array
*
* @return array
*/
public function getAllOptions()
{
$_objManager = MagentoFrameworkAppObjectManager::getInstance();
$brandData = $_objManager->create('AwaBrandModelBrand')->getCollection();
$options = array();
$options =[
'value' => '',
'label' => __('-- Please Select --')
];
foreach($brandData as $_brand){
$options = [
'value' => $_brand->getBrandId(),
'label' => __($_brand->getTitle())
];
}
return $options;

}

public function toOptionArray()
{
$_objManager = MagentoFrameworkAppObjectManager::getInstance();
$brandData = $_objManager->create('AwaBrandModelBrand')->getCollection();
$options = array();
$options =[
'value' => '',
'label' => __('-- Please Select --')
];
foreach($brandData as $_brand){
$options = [
'value' => $_brand->getBrandId(),
'label' => __($_brand->getTitle())
];
}
return $options;

}
}


This attribute created successfull



When I try to get product collection by this attribute its not working
and this attribute not showing product collection



MY get product collection code following



<?php
$_product = $block->getProduct();

$objectManager = MagentoFrameworkAppObjectManager::getInstance();
$productCollection = $objectManager->get('MagentoCatalogModelResourceModelProductCollectionFactory');
$collection = $productCollection->create()
->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
->setPageSize(3);

foreach($collection as $product):
echo '<pre/>'; print_r($product->getData());exit;
endforeach;


?>










share|improve this question









New contributor




prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    0















    I am creating a custom product attribute in Magento 2 by custom module InstallData.php code following



        <?php
    namespace AwaBrand\Setup;

    use MagentoEavSetupEavSetupFactory;
    use MagentoFrameworkSetupInstallDataInterface;
    use MagentoFrameworkSetupModuleContextInterface;
    use MagentoFrameworkSetupModuleDataSetupInterface;

    class InstallData implements InstallDataInterface
    {
    /**
    * EAV setup factory
    *
    * @var MagentoEavSetupEavSetupFactory
    */
    private $eavSetupFactory;

    /**
    * Constructor
    *
    * @param EavSetupFactory $eavSetupFactory
    */
    public function __construct(
    EavSetupFactory $eavSetupFactory
    ) {
    $this->eavSetupFactory = $eavSetupFactory;
    }

    /**
    * {@inheritdoc}
    */
    public function install(
    ModuleDataSetupInterface $setup,
    ModuleContextInterface $context
    ) {
    $setup->startSetup();

    $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);


    $eavSetup->addAttribute(
    MagentoCatalogModelProduct::ENTITY,
    'awa_brand',
    [
    'type' => 'int',
    'backend' => '',
    'frontend' => '',
    'label' => 'Attribute Select',
    'input' => 'select',
    'class' => '',
    'source' => 'AwaBrandModelConfigSourceOptions',
    'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_STORE,
    'visible' => true,
    'required' => true,
    'user_defined' => false,
    'default' => '',
    'searchable' => false,
    'filterable' => false,
    'comparable' => false,
    'visible_on_front' => false,
    'used_in_product_listing' => true,
    'unique' => false,
    'apply_to' => ''
    ]
    );

    $setup->endSetup();
    }
    }


    and source Module is bellow



        <?php 
    namespace AwaBrandModelConfigSource;

    class Options extends MagentoEavModelEntityAttributeSourceAbstractSource
    {
    /**
    * to option array
    *
    * @return array
    */
    public function getAllOptions()
    {
    $_objManager = MagentoFrameworkAppObjectManager::getInstance();
    $brandData = $_objManager->create('AwaBrandModelBrand')->getCollection();
    $options = array();
    $options =[
    'value' => '',
    'label' => __('-- Please Select --')
    ];
    foreach($brandData as $_brand){
    $options = [
    'value' => $_brand->getBrandId(),
    'label' => __($_brand->getTitle())
    ];
    }
    return $options;

    }

    public function toOptionArray()
    {
    $_objManager = MagentoFrameworkAppObjectManager::getInstance();
    $brandData = $_objManager->create('AwaBrandModelBrand')->getCollection();
    $options = array();
    $options =[
    'value' => '',
    'label' => __('-- Please Select --')
    ];
    foreach($brandData as $_brand){
    $options = [
    'value' => $_brand->getBrandId(),
    'label' => __($_brand->getTitle())
    ];
    }
    return $options;

    }
    }


    This attribute created successfull



    When I try to get product collection by this attribute its not working
    and this attribute not showing product collection



    MY get product collection code following



    <?php
    $_product = $block->getProduct();

    $objectManager = MagentoFrameworkAppObjectManager::getInstance();
    $productCollection = $objectManager->get('MagentoCatalogModelResourceModelProductCollectionFactory');
    $collection = $productCollection->create()
    ->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
    ->setPageSize(3);

    foreach($collection as $product):
    echo '<pre/>'; print_r($product->getData());exit;
    endforeach;


    ?>










    share|improve this question









    New contributor




    prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      0












      0








      0








      I am creating a custom product attribute in Magento 2 by custom module InstallData.php code following



          <?php
      namespace AwaBrand\Setup;

      use MagentoEavSetupEavSetupFactory;
      use MagentoFrameworkSetupInstallDataInterface;
      use MagentoFrameworkSetupModuleContextInterface;
      use MagentoFrameworkSetupModuleDataSetupInterface;

      class InstallData implements InstallDataInterface
      {
      /**
      * EAV setup factory
      *
      * @var MagentoEavSetupEavSetupFactory
      */
      private $eavSetupFactory;

      /**
      * Constructor
      *
      * @param EavSetupFactory $eavSetupFactory
      */
      public function __construct(
      EavSetupFactory $eavSetupFactory
      ) {
      $this->eavSetupFactory = $eavSetupFactory;
      }

      /**
      * {@inheritdoc}
      */
      public function install(
      ModuleDataSetupInterface $setup,
      ModuleContextInterface $context
      ) {
      $setup->startSetup();

      $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);


      $eavSetup->addAttribute(
      MagentoCatalogModelProduct::ENTITY,
      'awa_brand',
      [
      'type' => 'int',
      'backend' => '',
      'frontend' => '',
      'label' => 'Attribute Select',
      'input' => 'select',
      'class' => '',
      'source' => 'AwaBrandModelConfigSourceOptions',
      'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_STORE,
      'visible' => true,
      'required' => true,
      'user_defined' => false,
      'default' => '',
      'searchable' => false,
      'filterable' => false,
      'comparable' => false,
      'visible_on_front' => false,
      'used_in_product_listing' => true,
      'unique' => false,
      'apply_to' => ''
      ]
      );

      $setup->endSetup();
      }
      }


      and source Module is bellow



          <?php 
      namespace AwaBrandModelConfigSource;

      class Options extends MagentoEavModelEntityAttributeSourceAbstractSource
      {
      /**
      * to option array
      *
      * @return array
      */
      public function getAllOptions()
      {
      $_objManager = MagentoFrameworkAppObjectManager::getInstance();
      $brandData = $_objManager->create('AwaBrandModelBrand')->getCollection();
      $options = array();
      $options =[
      'value' => '',
      'label' => __('-- Please Select --')
      ];
      foreach($brandData as $_brand){
      $options = [
      'value' => $_brand->getBrandId(),
      'label' => __($_brand->getTitle())
      ];
      }
      return $options;

      }

      public function toOptionArray()
      {
      $_objManager = MagentoFrameworkAppObjectManager::getInstance();
      $brandData = $_objManager->create('AwaBrandModelBrand')->getCollection();
      $options = array();
      $options =[
      'value' => '',
      'label' => __('-- Please Select --')
      ];
      foreach($brandData as $_brand){
      $options = [
      'value' => $_brand->getBrandId(),
      'label' => __($_brand->getTitle())
      ];
      }
      return $options;

      }
      }


      This attribute created successfull



      When I try to get product collection by this attribute its not working
      and this attribute not showing product collection



      MY get product collection code following



      <?php
      $_product = $block->getProduct();

      $objectManager = MagentoFrameworkAppObjectManager::getInstance();
      $productCollection = $objectManager->get('MagentoCatalogModelResourceModelProductCollectionFactory');
      $collection = $productCollection->create()
      ->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
      ->setPageSize(3);

      foreach($collection as $product):
      echo '<pre/>'; print_r($product->getData());exit;
      endforeach;


      ?>










      share|improve this question









      New contributor




      prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      I am creating a custom product attribute in Magento 2 by custom module InstallData.php code following



          <?php
      namespace AwaBrand\Setup;

      use MagentoEavSetupEavSetupFactory;
      use MagentoFrameworkSetupInstallDataInterface;
      use MagentoFrameworkSetupModuleContextInterface;
      use MagentoFrameworkSetupModuleDataSetupInterface;

      class InstallData implements InstallDataInterface
      {
      /**
      * EAV setup factory
      *
      * @var MagentoEavSetupEavSetupFactory
      */
      private $eavSetupFactory;

      /**
      * Constructor
      *
      * @param EavSetupFactory $eavSetupFactory
      */
      public function __construct(
      EavSetupFactory $eavSetupFactory
      ) {
      $this->eavSetupFactory = $eavSetupFactory;
      }

      /**
      * {@inheritdoc}
      */
      public function install(
      ModuleDataSetupInterface $setup,
      ModuleContextInterface $context
      ) {
      $setup->startSetup();

      $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);


      $eavSetup->addAttribute(
      MagentoCatalogModelProduct::ENTITY,
      'awa_brand',
      [
      'type' => 'int',
      'backend' => '',
      'frontend' => '',
      'label' => 'Attribute Select',
      'input' => 'select',
      'class' => '',
      'source' => 'AwaBrandModelConfigSourceOptions',
      'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_STORE,
      'visible' => true,
      'required' => true,
      'user_defined' => false,
      'default' => '',
      'searchable' => false,
      'filterable' => false,
      'comparable' => false,
      'visible_on_front' => false,
      'used_in_product_listing' => true,
      'unique' => false,
      'apply_to' => ''
      ]
      );

      $setup->endSetup();
      }
      }


      and source Module is bellow



          <?php 
      namespace AwaBrandModelConfigSource;

      class Options extends MagentoEavModelEntityAttributeSourceAbstractSource
      {
      /**
      * to option array
      *
      * @return array
      */
      public function getAllOptions()
      {
      $_objManager = MagentoFrameworkAppObjectManager::getInstance();
      $brandData = $_objManager->create('AwaBrandModelBrand')->getCollection();
      $options = array();
      $options =[
      'value' => '',
      'label' => __('-- Please Select --')
      ];
      foreach($brandData as $_brand){
      $options = [
      'value' => $_brand->getBrandId(),
      'label' => __($_brand->getTitle())
      ];
      }
      return $options;

      }

      public function toOptionArray()
      {
      $_objManager = MagentoFrameworkAppObjectManager::getInstance();
      $brandData = $_objManager->create('AwaBrandModelBrand')->getCollection();
      $options = array();
      $options =[
      'value' => '',
      'label' => __('-- Please Select --')
      ];
      foreach($brandData as $_brand){
      $options = [
      'value' => $_brand->getBrandId(),
      'label' => __($_brand->getTitle())
      ];
      }
      return $options;

      }
      }


      This attribute created successfull



      When I try to get product collection by this attribute its not working
      and this attribute not showing product collection



      MY get product collection code following



      <?php
      $_product = $block->getProduct();

      $objectManager = MagentoFrameworkAppObjectManager::getInstance();
      $productCollection = $objectManager->get('MagentoCatalogModelResourceModelProductCollectionFactory');
      $collection = $productCollection->create()
      ->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
      ->setPageSize(3);

      foreach($collection as $product):
      echo '<pre/>'; print_r($product->getData());exit;
      endforeach;


      ?>







      magento2 product-collection custom-attributes






      share|improve this question









      New contributor




      prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 11 mins ago









      Teja Bhagavan Kollepara

      2,96341847




      2,96341847






      New contributor




      prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 1 hour ago









      prakash saranprakash saran

      12




      12




      New contributor




      prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      prakash saran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          2 Answers
          2






          active

          oldest

          votes


















          2














          Before addAttributeToFilter Function You Must Select All Attribute Using addAttributeToSelect Function



          $collection = $productCollection->create()
          ->addAttributeToSelect('*')
          ->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
          ->setPageSize(3);





          share|improve this answer








          New contributor




          Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.




























            0














            Use of objectmanager directly is not a good practice.

            See the below code may help you:



            protected $_productloader;

            public function __construct(
            MagentoCatalogModelProductFactory $productloader
            )
            {
            $this->_productloader = $productloader;
            }

            // function in which you want to access

            function abc()
            {
            $productId = 10;
            $_product = $this->_productloader->create()->load($productId);
            $awa_brand = $_product->getData('awa_brand');
            }





            share|improve this answer























              Your Answer








              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "479"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });






              prakash saran is a new contributor. Be nice, and check out our Code of Conduct.










              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f263791%2fmagento-2-product-custom-attribute-source-model-outerset-attribute-not-showing-i%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              2














              Before addAttributeToFilter Function You Must Select All Attribute Using addAttributeToSelect Function



              $collection = $productCollection->create()
              ->addAttributeToSelect('*')
              ->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
              ->setPageSize(3);





              share|improve this answer








              New contributor




              Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.

























                2














                Before addAttributeToFilter Function You Must Select All Attribute Using addAttributeToSelect Function



                $collection = $productCollection->create()
                ->addAttributeToSelect('*')
                ->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
                ->setPageSize(3);





                share|improve this answer








                New contributor




                Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.























                  2












                  2








                  2







                  Before addAttributeToFilter Function You Must Select All Attribute Using addAttributeToSelect Function



                  $collection = $productCollection->create()
                  ->addAttributeToSelect('*')
                  ->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
                  ->setPageSize(3);





                  share|improve this answer








                  New contributor




                  Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.










                  Before addAttributeToFilter Function You Must Select All Attribute Using addAttributeToSelect Function



                  $collection = $productCollection->create()
                  ->addAttributeToSelect('*')
                  ->addAttributeToFilter('awa_brand',array('eq' => $_product->getAwaBrand()))
                  ->setPageSize(3);






                  share|improve this answer








                  New contributor




                  Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.









                  share|improve this answer



                  share|improve this answer






                  New contributor




                  Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.









                  answered 1 hour ago









                  Ronak RathodRonak Rathod

                  762




                  762




                  New contributor




                  Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.





                  New contributor





                  Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.






                  Ronak Rathod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.

























                      0














                      Use of objectmanager directly is not a good practice.

                      See the below code may help you:



                      protected $_productloader;

                      public function __construct(
                      MagentoCatalogModelProductFactory $productloader
                      )
                      {
                      $this->_productloader = $productloader;
                      }

                      // function in which you want to access

                      function abc()
                      {
                      $productId = 10;
                      $_product = $this->_productloader->create()->load($productId);
                      $awa_brand = $_product->getData('awa_brand');
                      }





                      share|improve this answer




























                        0














                        Use of objectmanager directly is not a good practice.

                        See the below code may help you:



                        protected $_productloader;

                        public function __construct(
                        MagentoCatalogModelProductFactory $productloader
                        )
                        {
                        $this->_productloader = $productloader;
                        }

                        // function in which you want to access

                        function abc()
                        {
                        $productId = 10;
                        $_product = $this->_productloader->create()->load($productId);
                        $awa_brand = $_product->getData('awa_brand');
                        }





                        share|improve this answer


























                          0












                          0








                          0







                          Use of objectmanager directly is not a good practice.

                          See the below code may help you:



                          protected $_productloader;

                          public function __construct(
                          MagentoCatalogModelProductFactory $productloader
                          )
                          {
                          $this->_productloader = $productloader;
                          }

                          // function in which you want to access

                          function abc()
                          {
                          $productId = 10;
                          $_product = $this->_productloader->create()->load($productId);
                          $awa_brand = $_product->getData('awa_brand');
                          }





                          share|improve this answer













                          Use of objectmanager directly is not a good practice.

                          See the below code may help you:



                          protected $_productloader;

                          public function __construct(
                          MagentoCatalogModelProductFactory $productloader
                          )
                          {
                          $this->_productloader = $productloader;
                          }

                          // function in which you want to access

                          function abc()
                          {
                          $productId = 10;
                          $_product = $this->_productloader->create()->load($productId);
                          $awa_brand = $_product->getData('awa_brand');
                          }






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 1 hour ago









                          iqbal malikiqbal malik

                          10412




                          10412






















                              prakash saran is a new contributor. Be nice, and check out our Code of Conduct.










                              draft saved

                              draft discarded


















                              prakash saran is a new contributor. Be nice, and check out our Code of Conduct.













                              prakash saran is a new contributor. Be nice, and check out our Code of Conduct.












                              prakash saran is a new contributor. Be nice, and check out our Code of Conduct.
















                              Thanks for contributing an answer to Magento Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f263791%2fmagento-2-product-custom-attribute-source-model-outerset-attribute-not-showing-i%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              What other Star Trek series did the main TNG cast show up in?

                              Berlina muro

                              Berlina aerponto