本文整理汇总了PHP中Cake\Collection\Collection::extract方法的典型用法代码示例。如果您正苦于以下问题:PHP Collection::extract方法的具体用法?PHP Collection::extract怎么用?PHP Collection::extract使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cake\Collection\Collection
的用法示例。
在下文中一共展示了Collection::extract方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: index
/**
* Index method
*
* @return \Cake\Network\Response|null
*/
public function index()
{
$releases = $this->Releases->find('all')->all();
$collection = new Collection($releases);
$attribute_names = array_unique($collection->extract('attribute_name')->toArray());
$idps = array_unique($collection->extract('idp')->toArray());
$releasesByIdp = $collection->groupBy('idp')->toArray();
foreach ($idps as $idp) {
foreach ($attribute_names as $attribute) {
$releasesByIdPbyAttribute = $collection->match(['idp' => $idp, 'attribute_name' => $attribute]);
$temp_result = $releasesByIdPbyAttribute->countBy(function ($result) {
return strtolower($result->validated) == 'fail' ? 'fail' : 'pass';
});
$results[$idp][$attribute] = $temp_result->toArray();
}
}
# My attributes
$persistentid_array = preg_split('/!/', $this->request->env('persistent-id'));
$persistentid = end($persistentid_array);
$myAttributesTemp = $this->Releases->find()->andWhere(['idp' => $this->request->env('Shib-Identity-Provider'), 'persistentid' => $persistentid])->all();
$myAttributesCollection = new Collection($myAttributesTemp);
$myAttributes = $myAttributesCollection->groupBy('attribute_name')->toArray();
$this->set(compact('myAttributes'));
$this->set('_serialize', ['myAttributes']);
$this->set(compact('results'));
$this->set('_serialize', ['results']);
$this->set(compact('idps'));
$this->set('_serialize', ['idps']);
$this->set(compact('attribute_names'));
$this->set('_serialize', ['attribute_names']);
}
示例2: testExtract
/**
* Tests extract
*
* @return void
*/
public function testExtract()
{
$items = [['a' => ['b' => ['c' => 1]]], 2];
$collection = new Collection($items);
$map = $collection->extract('a.b.c');
$this->assertInstanceOf('\\Cake\\Collection\\Iterator\\ExtractIterator', $map);
$this->assertEquals([1, null], iterator_to_array($map));
}
示例3: getLibrary
public function getLibrary()
{
$this->viewBuilder()->layout("ajax");
$this->autoRender = false;
$this->loadModel('Playlists');
$this->loadModel('Tracks');
$userId = $this->request->session()->read('user.id');
$library = $this->Playlists->find('all')->where(['user_id' => $userId])->contain('Tracks');
if ($library->count() == 0) {
echo json_encode(['success' => false]);
return;
}
$library = $library->toArray();
// remove tracks from playlists
$libraryCollection = new Collection($library);
$playlists = $libraryCollection->extract(function ($list) {
unset($list->tracks);
return $list;
});
// if tokens is expired get new downloadUrls
// GAUTH: is token expired
$gotUpdatedDownloadUrls = false;
$client = new \Google_Client();
$client->setAuthConfigFile('../client_secret.json');
$client->addScope(\Google_Service_Drive::DRIVE);
if ($this->request->session()->check('user.drive_token')) {
$client->setAccessToken($this->request->session()->read('user.drive_token'));
if ($client->isAccessTokenExpired()) {
$gotUpdatedDownloadUrls = true;
}
} else {
$gotUpdatedDownloadUrls = true;
}
$driveFiles = $this->getMusicFromDrive();
$driveFileUrlById = (new Collection($driveFiles))->combine('id', function ($entity) {
return str_replace("?e=download&gd=true", "", $entity['downloadUrl']);
})->toArray();
// create tracks by playlist id, also update new download_url if gotten it
$tracksByPlaylistId = [];
$tracksById = [];
foreach ($library as $list) {
$tracksByPlaylistId[$list->id] = [];
foreach ($list->tracks as $track) {
if ($gotUpdatedDownloadUrls) {
$this->Tracks->patchEntity($track, ['download_url' => $driveFileUrlById[$track->drive_id]]);
$this->Tracks->save($track);
}
$tracksByPlaylistId[$track->playlist_id][] = $track;
$tracksById[$track->id] = $track;
}
}
echo json_encode(['playlists' => $playlists, 'tracksByPlaylistId' => $tracksByPlaylistId, 'tracksById' => $tracksById]);
}