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


PHP eZPersistentObject::swapRow方法代码示例

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


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

示例1: reorderObject

 /**
  * Moves a row in a database table.
  *
  * Uses $orderField to determine the order of objects in a table, usually this
  * is a placement of some kind. It uses this order field to figure out how move
  * the row, the row is either swapped with another row which is either above or
  * below according to whether $down is true or false, or it is swapped
  * with the first item or the last item depending on whether this row
  * is first or last.
  * Uses $conditions to figure out unique rows.
  *
  * Note: Transaction unsafe. If you call several transaction unsafe methods
  * you must enclose the calls within a db transaction; thus within db->begin
  * and db->commit.
  *
  * @param array $def A definition array of all fields, table name and sorting (see {@link eZPersistentObject::definition()} for more info)
  * @param array $orderField Associative array with one element, the key is the order id and values is order value.
  * @param array $conditions
  * @param bool $down
  * @return void
  */
 public static function reorderObject($def, $orderField, $conditions, $down = true)
 {
     $db = eZDB::instance();
     $table = $def["name"];
     $keys = $def["keys"];
     reset($orderField);
     $order_id = key($orderField);
     $order_val = $orderField[$order_id];
     if ($down) {
         $order_operator = ">=";
         $order_type = "asc";
         $order_add = -1;
     } else {
         $order_operator = "<=";
         $order_type = "desc";
         $order_add = 1;
     }
     $fields = array_merge($keys, array($order_id));
     $rows = eZPersistentObject::fetchObjectList($def, $fields, array_merge($conditions, array($order_id => array($order_operator, $order_val))), array($order_id => $order_type), array("length" => 2), false);
     if (count($rows) == 2) {
         $swapSQL1 = eZPersistentObject::swapRow($table, $keys, $order_id, $rows, 1, 0);
         $swapSQL2 = eZPersistentObject::swapRow($table, $keys, $order_id, $rows, 0, 1);
         $db->begin();
         $db->query($swapSQL1);
         $db->query($swapSQL2);
         $db->commit();
     } else {
         $tmp = eZPersistentObject::fetchObjectList($def, $fields, $conditions, array($order_id => $order_type), array("length" => 1), false);
         $where_text = eZPersistentObject::conditionTextByRow($keys, $rows[0]);
         $db->query("UPDATE {$table} SET {$order_id}='" . ($tmp[0][$order_id] + $order_add) . "'{$where_text}");
     }
 }
开发者ID:mugoweb,项目名称:ezpublish-legacy,代码行数:53,代码来源:ezpersistentobject.php


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