Doctrine: DATETIME default NOW()

By Steven Lloyd Watkin, Wednesday 30th December 2009 6:30 pm

I’ve been struggling with setting up a database schema for a new Zend Framework project. I’m using trying to use Doctrine ORM for my database models. I need to set up the schema so that it allowed me to set a default date and time for a `datetime` column, e.g. when adding a new message I get the current timestamp. After much searching and experimenting I found the solution so I’m sharing it.

In your schema YAML file simply do the following:

Message:
  actAs:
    Timestampable:
      created:
        name: created_at
        type: timestamp
        format: Y-m-d H:m:s
      updated:
        name: last_updated
        type: timestamp
        format: Y-m-d H:m:s
  columns:
    id:
      type: integer
      primary: true
      autoincrement: true
    name: string(255)
    email: string(300)
    message: string(2000)

If on the other hand you don’t want an `updated_at` column you can use the following:

Message:
  actAs:
    Timestampable:
      created:
        name: created_at
        type: timestamp
        format: Y-m-d H:m:s
      updated:
        disabled: true
  columns:
    id:
      type: integer
      primary: true
      autoincrement: true
    name: string(255)
    email: string(300)
    message: string(2000)

One Response to “Doctrine: DATETIME default NOW()”

  1. Thomas Coleman says:

    That worked a treat for me :D thanks for that, i had seen something like this when looking at doctrine examples but when i actually wanted to do it i could not find anything about it hehe.

Leave a Reply

Panorama Theme by Themocracy

9 visitors online now
9 guests, 0 members
Max visitors today: 14 at 03:02 am UTC
This month: 42 at 11-03-2010 02:50 am UTC
This year: 42 at 11-03-2010 02:50 am UTC
All time: 42 at 11-03-2010 02:50 am UTC