当前位置: 首页>>代码示例>>PHP>>正文


PHP DB::manipulate方法代码示例

本文整理汇总了PHP中SilverStripe\ORM\DB::manipulate方法的典型用法代码示例。如果您正苦于以下问题:PHP DB::manipulate方法的具体用法?PHP DB::manipulate怎么用?PHP DB::manipulate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SilverStripe\ORM\DB的用法示例。


在下文中一共展示了DB::manipulate方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: writeManipulation

 /**
  * Generate and write the database manipulation for all changed fields
  *
  * @param string $baseTable Base table
  * @param string $now Timestamp to use for the current time
  * @param bool $isNewRecord If this is a new record
  */
 protected function writeManipulation($baseTable, $now, $isNewRecord)
 {
     // Generate database manipulations for each class
     $manipulation = array();
     foreach (ClassInfo::ancestry(static::class, true) as $class) {
         $this->prepareManipulationTable($baseTable, $now, $isNewRecord, $manipulation, $class);
     }
     // Allow extensions to extend this manipulation
     $this->extend('augmentWrite', $manipulation);
     // New records have their insert into the base data table done first, so that they can pass the
     // generated ID on to the rest of the manipulation
     if ($isNewRecord) {
         $manipulation[$baseTable]['command'] = 'update';
     }
     // Perform the manipulation
     DB::manipulate($manipulation);
 }
开发者ID:SpiritLevel,项目名称:silverstripe-framework,代码行数:24,代码来源:DataObject.php

示例2: overrideField

 protected function overrideField($obj, $fieldName, $value, $fixtures = null)
 {
     $class = get_class($obj);
     $table = DataObject::getSchema()->tableForField($class, $fieldName);
     $value = $this->parseValue($value, $fixtures);
     DB::manipulate(array($table => array("command" => "update", "id" => $obj->ID, "class" => $class, "fields" => array($fieldName => $value))));
     $obj->{$fieldName} = $value;
 }
开发者ID:jacobbuck,项目名称:silverstripe-framework,代码行数:8,代码来源:FixtureBlueprint.php

示例3: add

 /**
  * Add an item to this many_many relationship
  * Does so by adding an entry to the joinTable.
  *
  * @param mixed $item
  * @param array $extraFields A map of additional columns to insert into the joinTable.
  * Column names should be ANSI quoted.
  * @throws Exception
  */
 public function add($item, $extraFields = array())
 {
     // Ensure nulls or empty strings are correctly treated as empty arrays
     if (empty($extraFields)) {
         $extraFields = array();
     }
     // Determine ID of new record
     if (is_numeric($item)) {
         $itemID = $item;
     } elseif ($item instanceof $this->dataClass) {
         $itemID = $item->ID;
     } else {
         throw new InvalidArgumentException("ManyManyList::add() expecting a {$this->dataClass} object, or ID value", E_USER_ERROR);
     }
     // Validate foreignID
     $foreignIDs = $this->getForeignID();
     if (empty($foreignIDs)) {
         throw new Exception("ManyManyList::add() can't be called until a foreign ID is set", E_USER_WARNING);
     }
     // Apply this item to each given foreign ID record
     if (!is_array($foreignIDs)) {
         $foreignIDs = array($foreignIDs);
     }
     foreach ($foreignIDs as $foreignID) {
         // Check for existing records for this item
         if ($foreignFilter = $this->foreignIDWriteFilter($foreignID)) {
             // With the current query, simply add the foreign and local conditions
             // The query can be a bit odd, especially if custom relation classes
             // don't join expected tables (@see Member_GroupSet for example).
             $query = new SQLSelect("*", "\"{$this->joinTable}\"");
             $query->addWhere($foreignFilter);
             $query->addWhere(array("\"{$this->joinTable}\".\"{$this->localKey}\"" => $itemID));
             $hasExisting = $query->count() > 0;
         } else {
             $hasExisting = false;
         }
         // Blank manipulation
         $manipulation = array($this->joinTable => array('command' => $hasExisting ? 'update' : 'insert', 'fields' => array()));
         if ($hasExisting) {
             $manipulation[$this->joinTable]['where'] = array("\"{$this->joinTable}\".\"{$this->foreignKey}\"" => $foreignID, "\"{$this->joinTable}\".\"{$this->localKey}\"" => $itemID);
         }
         if ($extraFields && $this->extraFields) {
             // Write extra field to manipluation in the same way
             // that DataObject::prepareManipulationTable writes fields
             foreach ($this->extraFields as $fieldName => $fieldSpec) {
                 // Skip fields without an assignment
                 if (array_key_exists($fieldName, $extraFields)) {
                     $fieldObject = Object::create_from_string($fieldSpec, $fieldName);
                     $fieldObject->setValue($extraFields[$fieldName]);
                     $fieldObject->writeToManipulation($manipulation[$this->joinTable]);
                 }
             }
         }
         $manipulation[$this->joinTable]['fields'][$this->localKey] = $itemID;
         $manipulation[$this->joinTable]['fields'][$this->foreignKey] = $foreignID;
         DB::manipulate($manipulation);
     }
 }
开发者ID:jacobbuck,项目名称:silverstripe-framework,代码行数:67,代码来源:ManyManyList.php


注:本文中的SilverStripe\ORM\DB::manipulate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。