Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-1269

Unexpected behavior while using association on a non primary key field

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Invalid
    • Affects Version/s: 2.1
    • Fix Version/s: None
    • Component/s: None
    • Security Level: All
    • Labels:
      None

      Description

      We have association on non primary key. Something like this:

      Entities\Payment:
        type: entity
        table: payments
        fields:
          id: 
            id: true
            type: integer
            nullable: false
            generator:
              strategy: IDENTITY
      [-- skipped --]
        manyToOne:
          order:
            targetEntity: Entities\Order
            inversedBy: payments
            joinColumn:
              name: scode
              referencedColumnName: scode
      
      Entities\Order:
        type: entity
        table: h_orders
        fields:
          id:
            id: true
            type: integer
            unsigned: false
            nullable: false
            generator:
              strategy: IDENTITY
          scode:
            type: integer
            unsigned: false
            nullable: false
      [-- skipped --]
        oneToMany:
          payments:
            targetEntity: Entities\Payment
            mappedBy: order
      

      When I try to fetch Order from Payment with lazy loading I receive empty Order object with null properties. If I use eager fetching Order object is valid.
      SQL generated for lazy loading seems to be valid, so I suppose the problem is in mapping result to the object. At the same time lazy loading works fine with 2.0.6 version.

      Another problem appears while persisting new Payment.

      $payment = new \Entities\Payment();
      ...
      $order = $this->em->getRepository('\Entities\Order')->find(46320);
      $payment->setOrder($order);
      $order->addPayments($payment);
      $this->em->persist($payment);
      $this->em->flush();
      

      I get this error: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'scode' cannot be null' in /usr/share/php/Doctrine/DBAL/Statement.php:131

      I found issue which is still open and looks like mine – http://www.doctrine-project.org/jira/browse/DDC-1114. What do you think about this?

        Issue Links

          Activity

            People

            • Assignee:
              Benjamin Eberlei
              Reporter:
              Alexandr Torchenko
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: