Uploaded image for project: 'Doctrine 2 - ORM'
  1. Doctrine 2 - ORM
  2. DDC-648

Custom mapping types for multiple DB columns


    • Type: New Feature
    • Status: Resolved
    • Priority: Major
    • Resolution: Duplicate
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Security Level: All
    • Labels:



      In current custom mapping types implementation there is a limit that it maps one entity property to just one database column.

      It would be great to be able to map one entity property do multiple database columns. It would make custom mapping types much more useful and elegant!

      FOR EXAMPLE in my application I have a simple class for geo coordinates:

      class Point
      public function getLatitude() ...
      public function getLongitude() ...
      public function setLatitude($latitude) ...
      public function setLongitude($latitude) ...

      And I have an entity that besides all other properties has a point:

      /** @entity */
      class Poi

      • @column(type='foobar')
      • @var Point
        private $point;

      public function getPoint()

      { return $this->point; }

      public function setPoint(Point $point)

      { $this->point = $point; }


      And database structure is something like this:

      CREATE TABLE poi (
      latitude FLOAT,
      longitude FLOAT,

      Advanced custom mapping types should be able to map my Point instance from entity property $point to both latitude and longitude columns in database and vice versa.

      Yes, I can do it in some complicated way with @prePersist, @preUpdate... events, but use of custom mapping types is much more natural, elegant, transparent and reusable...

      Is there a chance for rapid change of how custom mapping types act?

      Thanks, Jan

        Issue Links



            • Assignee:
              romanb Roman S. Borschel
              jantichy Jan Tichý
            • Votes:
              0 Vote for this issue
              2 Start watching this issue


              • Created: