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


PHP DataList::stat方法代码示例

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


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

示例1: getSideloadData

 /**
  * Fetches and return all the data that need to be sideloaded
  * for a specific source DataObject or DataList.
  * 
  * @param  DataObject|DataList  $dataSource The source data to fetch sideloaded records for
  * @return array                            A map of relation names with their data
  */
 protected function getSideloadData($dataSource)
 {
     $data = array();
     if ($dataSource instanceof DataObject) {
         $has_one = $dataSource->stat('has_one');
         $has_many = $dataSource->stat('has_many');
         $many_many = $dataSource->stat('many_many');
         $belongs_many_many = $dataSource->stat('belongs_many_many');
         $relationsMap = array();
         if (is_array($has_one)) {
             $relationsMap = array_merge($relationsMap, $has_one);
         }
         if (is_array($has_many)) {
             $relationsMap = array_merge($relationsMap, $has_many);
         }
         if (is_array($many_many)) {
             $relationsMap = array_merge($relationsMap, $many_many);
         }
         if (is_array($belongs_many_many)) {
             $relationsMap = array_merge($relationsMap, $belongs_many_many);
         }
         // if a single DataObject get the data for each relation
         foreach ($this->sideloadedRecords[$dataSource->ClassName] as $relationName) {
             $newData = $this->getEmbedData($dataSource, $relationName);
             if ($newData !== null) {
                 // has_one are only simple array and we want arrays or array
                 if (is_array($has_one) && in_array($relationName, $has_one)) {
                     $newData = array($newData);
                 }
                 $relationClass = $relationsMap[$relationName];
                 $data[$relationClass] = $newData;
             }
         }
     } elseif ($dataSource instanceof DataList) {
         // if a list of DataObject, loop through each and merge all the data together
         foreach ($dataSource as $dataObjectSource) {
             $sideloadData = $this->getSideloadData($dataObjectSource);
             //combine sideloaded records
             foreach ($sideloadData as $class => $extraData) {
                 if (!isset($data[$class])) {
                     $data[$class] = array();
                 }
                 // merge for list of records, push for individual record
                 $arrayOfArrays = array_filter($extraData, 'is_array');
                 if (count($arrayOfArrays) == count($extraData)) {
                     //print_r('array_merge');
                     $data[$class] = array_merge($data[$class], $extraData);
                 } else {
                     //print_r('array_push');
                     array_push($data[$class], $extraData);
                 }
             }
         }
         // remove duplicates
         foreach ($data as $relationClass => $relationData) {
             $data[$relationClass] = array_unique($relationData, SORT_REGULAR);
         }
     }
     return $data;
 }
开发者ID:colymba,项目名称:silverstripe-restfulapi,代码行数:67,代码来源:RESTfulAPI_EmberDataSerializer.php


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