21 private $fullTextSelect;
43 $this->fullTextSelect = $fulltext;
56 $rows = $this->queryByPhrase(strtolower($phrase));
57 $synsPerScope = $this->getSynRowsPerScope($rows);
59 if (!empty($synsPerScope[\
Magento\Store\Model\ScopeInterface::SCOPE_STORES])) {
60 $object->setData($synsPerScope[\
Magento\Store\Model\ScopeInterface::SCOPE_STORES]);
61 }
elseif (!empty($synsPerScope[\
Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES])) {
62 $object->setData($synsPerScope[\
Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES]);
77 $this->
_init(
'search_synonyms',
'group_id');
86 private function queryByPhrase($phrase)
88 $matchQuery = $this->fullTextSelect->getMatchQuery(
89 [
'synonyms' =>
'synonyms'],
95 )->where($matchQuery);
106 private function getSynRowsPerScope($rows)
108 $synRowsForStoreView = [];
109 $synRowsForWebsite = [];
110 $synRowsForDefault = [];
115 foreach ($rows as
$row) {
116 if ($this->isSynRowForStoreView(
$row)) {
118 $synRowsForStoreView[] =
$row;
119 }
elseif (empty($synRowsForStoreView) && $this->isSynRowForWebsite(
$row)) {
121 $synRowsForWebsite[] =
$row;
122 }
elseif (empty($synRowsForStoreView)
123 && empty($synRowsForWebsite)
124 && $this->isSynRowForDefaultScope(
$row)) {
126 $synRowsForDefault[] =
$row;
131 $synsPerScope[\Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT] = $synRowsForDefault;
132 return $synsPerScope;
141 private function isSynRowForStoreView(
$row)
143 $storeViewId = $this->storeManager->getStore()->getId();
144 return (
$row[
'store_id'] === $storeViewId);
153 private function isSynRowForWebsite(
$row)
155 $websiteId = $this->storeManager->getStore()->getWebsiteId();
165 private function isSynRowForDefaultScope(
$row)
167 return ((
$row[
'website_id'] == 0) && (
$row[
'store_id'] == 0));
elseif(isset( $params[ 'redirect_parent']))
const FULLTEXT_MODE_BOOLEAN
_init($mainTable, $idFieldName)
loadByPhrase(\Magento\Search\Model\SynonymReader $object, $phrase)
__construct(\Magento\Framework\Model\ResourceModel\Db\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\DB\Helper\Mysql\Fulltext $fulltext, $connectionName=null)
_afterLoad(\Magento\Framework\Model\AbstractModel $object)