mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-19 07:56:38 +02:00
94 lines
1.8 KiB
Markdown
94 lines
1.8 KiB
Markdown
title: Managing Lists
|
|
summary: The SS_List interface allows you to iterate through and manipulate a list of objects.
|
|
|
|
# Managing Lists
|
|
|
|
Whenever using the ORM to fetch records or navigate relationships you will receive an [api:SS_List] instance commonly as
|
|
either [api:DataList] or [api:RelationList]. This object gives you the ability to iterate over each of the results or
|
|
modify.
|
|
|
|
## Iterating over the list.
|
|
|
|
[api:SS_List] implements `IteratorAggregate`, allowing you to loop over the instance.
|
|
|
|
:::php
|
|
$members = Member::get();
|
|
|
|
foreach($members as $member) {
|
|
echo $member->Name;
|
|
}
|
|
|
|
Or in the template engine:
|
|
|
|
:::ss
|
|
<% loop $Members %>
|
|
<!-- -->
|
|
<% end_loop %>
|
|
|
|
## Finding an item by value.
|
|
|
|
:::php
|
|
// $list->find($key, $value);
|
|
|
|
//
|
|
$members = Member::get();
|
|
|
|
echo $members->find('ID', 4)->FirstName;
|
|
// returns 'Sam'
|
|
|
|
|
|
## Maps
|
|
|
|
A map is an array where the array indexes contain data as well as the values. You can build a map from any list
|
|
|
|
:::php
|
|
$members = Member::get()->map('ID', 'FirstName');
|
|
|
|
// $members = array(
|
|
// 1 => 'Sam'
|
|
// 2 => 'Sig'
|
|
// 3 => 'Will'
|
|
// );
|
|
|
|
This functionality is provided by the [api:SS_Map] class, which can be used to build a map around any `SS_List`.
|
|
|
|
:::php
|
|
$members = Member::get();
|
|
$map = new SS_Map($members, 'ID', 'FirstName');
|
|
|
|
## Column
|
|
|
|
:::php
|
|
$members = Member::get();
|
|
|
|
echo $members->column('Email');
|
|
|
|
// returns array(
|
|
// 'sam@silverstripe.com',
|
|
// 'sig@silverstripe.com',
|
|
// 'will@silverstripe.com'
|
|
// );
|
|
|
|
## ArrayList
|
|
|
|
[api:ArrayList] exists to wrap a standard PHP array in the same API as a database backed list.
|
|
|
|
:::php
|
|
$sam = Member::get()->byId(5);
|
|
$sig = Member::get()->byId(6);
|
|
|
|
$list = new ArrayList();
|
|
$list->push($sam);
|
|
$list->push($sig);
|
|
|
|
echo $list->Count();
|
|
// returns '2'
|
|
|
|
|
|
## API Documentation
|
|
|
|
* [api:SS_List]
|
|
* [api:RelationList]
|
|
* [api:DataList]
|
|
* [api:ArrayList]
|
|
* [api:SS_Map] |