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

Expiring a date-based object?


Reply

3 Posts   886 Views

Avatar
Bauer-CTU

11 October 2010 at 11:26pm (Last edited: 11 October 2010 11:27pm), Community Member, 10 Posts

Hi,
I can't get my head round the following ... I hope someone can help :-)

I have an Event DataObject as below and want any events that have taken place not to display when I call the events stored in the database. Ideally, I want to automatically delete the event from the database at the end of the day on which it takes place.

I see the CMS Workflow module has an Expiry method but from what I can gather this only applies to Pages not objects.

mysite/code/Event.php

class Event extends DataObject
{
   static $db = array (
      'EventName' => 'Text',
      'Description' => 'Text',
      'Date' => 'Date',
      'Time' => 'Text',
      'Venue' => 'Text',
      'ContactNumber' => 'Text'
   );
...
...

mysite/code/EventPage.php

class EventPage_Controller extends Page_Controller
{
   function Event()
   {
      return DataObject::get(
         'Event',
         null,
         'Date ASC',
         null
      );
   }

Many thanks in advance!

Avatar
bartvanirsel

12 October 2010 at 7:37am Community Member, 94 Posts

Hi,

i guess you can do this by just checking if date has passed in the query which will be generated by silverstripe through the DataObject get method.

something like:

return DataObject::get('Event', "Date > NOW()", 'Date DESC');

Avatar
Bauer-CTU

12 October 2010 at 9:47pm Community Member, 10 Posts

Thanks bart. It works a treat!
I think I was over-thinking it and expecting it to be more complicated! :-)