We always have a requirement to get value from `core_config_data` table in Magento 2. Magento uses ScopeConfigInterface to read config values from database located at /vendor/magento/framework/App/Config/ScopeConfigInterface.php. Do navigate this file to understand it better.
Method defined in the ScopeConfigInterface uses the Scope type as a parameter where ‘default’ is the default scope type. ScopeInterface located at /vendor/magento/module-store/Model/ScopeInterface.php have Scope Types available in the Magento as follows :
/**#@+ * Scope types */ const SCOPE_STORES = 'stores'; const SCOPE_GROUPS = 'groups'; const SCOPE_WEBSITES = 'websites'; const SCOPE_STORE = 'store'; const SCOPE_GROUP = 'group'; const SCOPE_WEBSITE = 'website'; /**#@-*/
Best example to check is the Magento own Model class.
/vendor/magento/module-cms/Model/GetUtilityPageIdentifiers.php
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Cms\Model;
use Magento\Cms\Api\GetUtilityPageIdentifiersInterface;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Store\Model\ScopeInterface;
/**
* Utility Cms Pages
*/
class GetUtilityPageIdentifiers implements GetUtilityPageIdentifiersInterface
{
/**
* @var ScopeConfigInterface
*/
private $scopeConfig;
/**
* UtilityCmsPage constructor.
* @param ScopeConfigInterface $scopeConfig
*/
public function __construct(
ScopeConfigInterface $scopeConfig
) {
$this->scopeConfig = $scopeConfig;
}
/**
* Get List Page Identifiers
* @return array
*/
public function execute()
{
$homePageIdentifier = $this->scopeConfig->getValue(
'web/default/cms_home_page',
ScopeInterface::SCOPE_STORE
);
$noRouteIdentifier = $this->scopeConfig->getValue(
'web/default/cms_no_route',
ScopeInterface::SCOPE_STORE
);
$noCookieIdentifier = $this->scopeConfig->getValue(
'web/default/cms_no_cookies',
ScopeInterface::SCOPE_STORE
);
return [$homePageIdentifier, $noRouteIdentifier, $noCookieIdentifier];
}
}