Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Data Model Questions

Update multiple dataobject records


2 Posts   1130 Views


31 October 2010 at 11:58pm (Last edited: 1 November 2010 12:01am), Community Member, 1 Post

I am building a site that includes a page where visitors can upload an image. There will be a moderation page where an authenticated user (administrator) will be able to see the uploaded images and set an accepted / declined flag for each image.

What I would like to be able to do is update all the records shown on the page in one go, as opposed to iterating through the dataobjects and calling write() on each one. The code I am using follows. All seems to work fine except $mediaItems->write();. Is there a better way to achieve this or is it acceptable to call write() within the for loop?


class MediaDataObject extends DataObject {
static $db = array(
'MediaURL' => 'Text',
'CreatorId' => 'Int',
'IsApproved' => 'Int'

<form action="media/doModerate" method="POST">
<% control mediaList %>
<td><img src="$MediaURL" /></td>
<input type="radio" name="video[$ID]" value="0" <% if IsApproved==0 %>checked='checked'<% end_if %> />
<input type="radio" name="video[$ID]" value="1" <% if IsApproved==1 %>checked='checked'<% end_if %> />
<input type="radio" name="video[$ID]" value="2" <% if IsApproved==2 %>checked='checked'<% end_if %> />
<% end_control %>


class MediaPage_Controller extends Page_Controller {
function init(){

function mediaList() {
$allMedialDataObjects = DataObject::get('MediaDataObject');
return $allMedialDataObjects;

function doModerate(SS_HTTPRequest $request) {
$vars = $request->postVars();
$approvals = $vars['video'];
$mediaItems = DataObject::get('MediaDataObject');   
foreach ($mediaItems as $mediaItem) {
$mediaItem->IsApproved = $approvals[$mediaItem->ID] ;


13 November 2010 at 8:57am Community Member, 279 Posts

mediaItems is a DataObjectSet and the method "write()" belongs to DataObject. You have to iterate maybe with foreach and write every single one:

foreach $mediaItems as $mediaItem {