예제 #1
0
 /**
  * Check if DB is up to date
  *
  * @return bool
  */
 private function isDbUpToDate()
 {
     foreach (array_keys($this->moduleList->getModules()) as $moduleName) {
         foreach ($this->resourceResolver->getResourceList($moduleName) as $resourceName) {
             $isSchemaUpToDate = $this->moduleManager->isDbSchemaUpToDate($moduleName, $resourceName);
             $isDataUpToDate = $this->moduleManager->isDbDataUpToDate($moduleName, $resourceName);
             if (!$isSchemaUpToDate || !$isDataUpToDate) {
                 return false;
             }
         }
     }
     return true;
 }
예제 #2
0
 /**
  * Apply database scheme updates whenever needed
  *
  * @return void
  */
 public function updateScheme()
 {
     \Magento\Framework\Profiler::start('apply_db_schema_updates');
     $this->_appState->setUpdateMode(true);
     $afterApplyUpdates = array();
     foreach (array_keys($this->_moduleList->getModules()) as $moduleName) {
         foreach ($this->_resourceResolver->getResourceList($moduleName) as $resourceName) {
             if (!$this->_moduleManager->isDbSchemaUpToDate($moduleName, $resourceName)) {
                 $setup = $this->_setupFactory->create($resourceName, $moduleName);
                 $setup->applyUpdates();
                 if ($setup->getCallAfterApplyAllUpdates()) {
                     $afterApplyUpdates[] = $setup;
                 }
             }
         }
     }
     /** @var $setup \Magento\Framework\Module\Updater\SetupInterface*/
     foreach ($afterApplyUpdates as $setup) {
         $setup->afterApplyAllUpdates();
     }
     $this->_appState->setUpdateMode(false);
     $this->_isUpdatedSchema = true;
     \Magento\Framework\Profiler::stop('apply_db_schema_updates');
 }