当前位置: 首页>>代码示例>>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;未经允许,请勿转载。