I have an adminhtml custom grid that has a product_id that I need to join the product name to using this product id. I need to use dependency injection to load the attribute manager and store manager so I can do this. Here is the code in my Collection. I have marked ** will not load by the 2 classes I need which when I try to load the page, make it error out. If I comment out the lines that inject the 2 classes, the grid loads fine: public function __construct( \Magento\Framework\Data\Collection\EntityFactoryInterface $entityFactory, \Psr\Log\LoggerInterface $logger, \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy, \Magento\Framework\Event\ManagerInterface $eventManager, \Magento\Framework\DB\Adapter\AdapterInterface $connection = null, \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource = null, \Magento\Eav\Api\AttributeRepositoryInterface $attrRepoInt, // ** will not load \Magento\Store\Model\StoreManagerInterface $storeMan // ** will not load ) { $this->_eventManager = $eventManager; $this->_attrRepoInt = $attrRepoInt; $this->_storeMan = $storeMan; parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager, $connection, $resource); } So the idea is that if I can get access to these 2 classes, then my join code would be like this: public function joinProductNames() { $productNameAttributeId = $this->_attrRepoInt->get('catalog_product', 'name'); $storeid = $this->_storeMan->getStore(); // join product entity varchar where attributeid = $productNameAttributeId // and entity_id to product_id of my table, where store id = $storeid return $this; } Then in the Grid/Collection I can just call this, I have done this fine with other joins but they did not require access to other classes in the Collection: protected function _initSelect() { parent::_initSelect(); $this->joinProductNames(); return $this; } So my question is how do I get those 2 classes to load? Or how can I get access to product name via product id some other way? My preference is to join in the grid so that it has better performance rather than making a column render.