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


PHP Versioned::augmentSQL方法代碼示例

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


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

示例1: augmentSQL

 /**
  * augmentSQL alters read requests to return the 'correct' DataObject, given the current Moderatable state setting
  */
 function augmentSQL(SQLQuery &$query)
 {
     /* If its disjunctive, throw an error. That would mean all approved objects would be included on all queries. */
     if ($query->connective == "OR") {
         throw new Exception("Moderatable can't filter on a disjunctive query");
     }
     $savedstage = Versioned::$reading_stage;
     $stageTable = $this->baseTable($this->defaultStage);
     $liveTable = $this->baseTable($this->liveStage);
     /* Handle the 'approved' & 'approved_if_latest' selections */
     if (ModeratableState::$state == 'approved' || ModeratableState::$state == 'approved_if_latest') {
         Versioned::$reading_stage = $this->liveStage;
         parent::augmentSQL($query);
         if (ModeratableState::$state == 'approved_if_latest') {
             $query->from["{$stageTable}VMVerCheck"] = "LEFT JOIN `{$stageTable}` ON `{$stageTable}`.ID = `{$liveTable}`.ID";
             $query->where['VMVerCheck'] = "`{$stageTable}`.Version <= `{$liveTable}`.Version";
         }
     } else {
         Versioned::$reading_stage = $this->defaultStage;
         parent::augmentSQL($query);
         if (ModeratableState::$state != 'any') {
             $query->where['VMSpamSplit'] = $this->where(ModeratableState::$state);
             $query->leftJoin($liveTable, "`{$stageTable}`.ID = `{$liveTable}`.ID");
             $query->where['VMVerCheck'] = "`{$liveTable}`.Version IS NULL OR `{$stageTable}`.Version > `{$liveTable}`.Version";
         }
     }
     Versioned::$reading_stage = $savedstage;
 }
開發者ID:muskie9,項目名稱:silverstripe-moderation,代碼行數:31,代碼來源:VersionedModeratable.php


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