當前位置: 首頁>>代碼示例>>PHP>>正文


PHP TableGateway::executeInsert方法代碼示例

本文整理匯總了PHP中Zend\Db\TableGateway\TableGateway::executeInsert方法的典型用法代碼示例。如果您正苦於以下問題:PHP TableGateway::executeInsert方法的具體用法?PHP TableGateway::executeInsert怎麽用?PHP TableGateway::executeInsert使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Zend\Db\TableGateway\TableGateway的用法示例。


在下文中一共展示了TableGateway::executeInsert方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: executeInsert

 /**
  * @param Insert $insert
  * @return mixed
  * @throws \Directus\Acl\Exception\UnauthorizedTableAddException
  * @throws \Directus\Acl\Exception\UnauthorizedFieldWriteException
  */
 protected function executeInsert(Insert $insert)
 {
     /**
      * ACL Enforcement
      */
     $insertState = $insert->getRawState();
     $insertTable = $this->getRawTableNameFromQueryStateTable($insertState['table']);
     if (!$this->acl->hasTablePrivilege($insertTable, 'add')) {
         $aclErrorPrefix = $this->acl->getErrorMessagePrefix();
         throw new UnauthorizedTableAddException($aclErrorPrefix . "Table add access forbidden on table {$insertTable}");
     }
     // Enforce write field blacklist (if user lacks bigedit privileges on this table)
     if (!$this->acl->hasTablePrivilege($insertTable, 'bigedit')) {
         $this->acl->enforceBlacklist($insertTable, $insertState['columns'], Acl::FIELD_WRITE_BLACKLIST);
     }
     try {
         return parent::executeInsert($insert);
     } catch (\Zend\Db\Adapter\Exception\InvalidQueryException $e) {
         if ('production' !== DIRECTUS_ENV) {
             if (strpos(strtolower($e->getMessage()), 'duplicate entry') !== FALSE) {
                 throw new DuplicateEntryException($e->getMessage());
             }
             throw new \RuntimeException("This query failed: " . $this->dumpSql($insert), 0, $e);
         }
         // @todo send developer warning
         throw $e;
     }
 }
開發者ID:rudderdon,項目名稱:Directus,代碼行數:34,代碼來源:AclAwareTableGateway.php

示例2: executeInsert

 /**
  * @param Insert $insert
  * @return mixed
  * @throws \Directus\Acl\Exception\UnauthorizedTableAddException
  * @throws \Directus\Acl\Exception\UnauthorizedFieldWriteException
  */
 protected function executeInsert(Insert $insert)
 {
     /**
      * ACL Enforcement
      */
     $insertState = $insert->getRawState();
     $insertTable = $this->getRawTableNameFromQueryStateTable($insertState['table']);
     $insertData = $insertState['values'];
     if (!$this->acl->hasTablePrivilege($insertTable, 'add')) {
         $aclErrorPrefix = $this->acl->getErrorMessagePrefix();
         throw new UnauthorizedTableAddException($aclErrorPrefix . 'Table add access forbidden on table ' . $insertTable);
     }
     // Enforce write field blacklist
     $this->acl->enforceBlacklist($insertTable, $insertState['columns'], Acl::FIELD_WRITE_BLACKLIST);
     try {
         // Data to be inserted with the column name as assoc key.
         $insertDataAssoc = array_combine($insertState['columns'], $insertData);
         $this->emitter->run('table.insert:before', [$insertTable, $insertDataAssoc]);
         $this->emitter->run('table.insert.' . $insertTable . ':before', [$insertDataAssoc]);
         $result = parent::executeInsert($insert);
         $insertTableGateway = new self($this->acl, $insertTable, $this->adapter);
         $resultData = $insertTableGateway->find($this->getLastInsertValue());
         $this->emitter->run('table.insert', [$insertTable, $resultData]);
         $this->emitter->run('table.insert.' . $insertTable, [$resultData]);
         $this->emitter->run('table.insert:after', [$insertTable, $resultData]);
         $this->emitter->run('table.insert.' . $insertTable . ':after', [$resultData]);
         return $result;
     } catch (\Zend\Db\Adapter\Exception\InvalidQueryException $e) {
         // @todo send developer warning
         if (strpos(strtolower($e->getMessage()), 'duplicate entry') !== FALSE) {
             throw new DuplicateEntryException($e->getMessage());
         }
         if ('production' !== DIRECTUS_ENV) {
             throw new \RuntimeException('This query failed: ' . $this->dumpSql($insert), 0, $e);
         }
         throw $e;
     }
 }
開發者ID:YounessTayer,項目名稱:directus,代碼行數:44,代碼來源:AclAwareTableGateway.php


注:本文中的Zend\Db\TableGateway\TableGateway::executeInsert方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。