DDC-3296: JoinColumns seems to only populate one JoinColumn #4075

Open
opened 2026-01-22 14:34:42 +01:00 by admin · 2 comments
Owner

Originally created by @doctrinebot on GitHub (Sep 4, 2014).

Originally assigned to: @beberlei on GitHub.

Jira issue originally created by user hackzilla:

I have two entities that are linked via two properties (trackingClickId and trackingSiteId).

However it seems to miss the second JoinColumn.

{quote}
[Mapping] FAIL - The entity-class '...\Entity\SaleData' mapping is invalid:

  • The join columns of the association 'click' have to match to ALL identifier columns of the target entity '..\Entity\SaleData', however 'tracking_site_id' are missing.
    {quote}
class TrackingData
{

    /****
     * @ORM\Column(name="tracking*click*id", type="integer")
     * @ORM\Id
     */
    private $trackingClickId;

    /****
     * @ORM\Column(name="tracking*site*id", type="integer")
     * @ORM\Id
     * @Assert\NotBlank
     */
    private $trackingSiteId;

    /****
     * @ORM\OneToMany(targetEntity="SaleData", mappedBy="click")
     * @ORM\JoinColumns=({
     *      @ORM\JoinColumn(name="tracking*click_id", referencedColumnName="tracking_click*id"),
     *      @ORM\JoinColumn(name="tracking*site_id", referencedColumnName="tracking_site*id"), 
     * })
     */
    private $sales;
    
}
class SaleData
{

    /****
     * @ORM\Column(name="tracking*site*id", type="integer")
     * @ORM\Id
     * @Assert\NotBlank
     */
    private $trackingSiteId;

    /****
     * @ORM\Column(name="tracking*click*id", type="integer")
     * @ORM\Id
     * @Assert\NotBlank
     */
    private $trackingClickId;

    /****
     * @ORM\ManyToOne(targetEntity="TrackingData", inversedBy="sales")
     * @ORM\JoinColumns=({
     *      @ORM\JoinColumn(name="tracking*click_id", referencedColumnName="tracking_click*id"),
     *      @ORM\JoinColumn(name="tracking*site_id", referencedColumnName="tracking_site*id")
     * })
     */
    private $click;
}

I have been poking around in Doctrine\ORM\Tools\SchemaValidator (L:215).

var_dump($identifierColumns, $assoc['joinColumns']);

array(2) {
  [0] =>
  string(17) "tracking*click*id"
  [1] =>
  string(16) "tracking*site*id"
}
array(1) {
  [0] =>
  array(6) {
    'name' =>
    string(17) "tracking*click*id"
    'unique' =>
    bool(false)
    'nullable' =>
    bool(true)
    'onDelete' =>
    NULL
    'columnDefinition' =>
    NULL
    'referencedColumnName' =>
    string(17) "tracking*click*id"
  }
}
Originally created by @doctrinebot on GitHub (Sep 4, 2014). Originally assigned to: @beberlei on GitHub. Jira issue originally created by user hackzilla: I have two entities that are linked via two properties (trackingClickId and trackingSiteId). However it seems to miss the second JoinColumn. {quote} [Mapping] FAIL - The entity-class '...\Entity\SaleData' mapping is invalid: - The join columns of the association 'click' have to match to ALL identifier columns of the target entity '..\Entity\SaleData', however 'tracking_site_id' are missing. {quote} ``` class TrackingData {     /****      * @ORM\Column(name="tracking*click*id", type="integer")      * @ORM\Id      */     private $trackingClickId;     /****      * @ORM\Column(name="tracking*site*id", type="integer")      * @ORM\Id      * @Assert\NotBlank      */     private $trackingSiteId;     /****      * @ORM\OneToMany(targetEntity="SaleData", mappedBy="click")      * @ORM\JoinColumns=({      *      @ORM\JoinColumn(name="tracking*click_id", referencedColumnName="tracking_click*id"),      *      @ORM\JoinColumn(name="tracking*site_id", referencedColumnName="tracking_site*id"),       * })      */     private $sales;      } ``` ``` class SaleData { /**** * @ORM\Column(name="tracking*site*id", type="integer") * @ORM\Id * @Assert\NotBlank */ private $trackingSiteId; /**** * @ORM\Column(name="tracking*click*id", type="integer") * @ORM\Id * @Assert\NotBlank */ private $trackingClickId; /**** * @ORM\ManyToOne(targetEntity="TrackingData", inversedBy="sales") * @ORM\JoinColumns=({ * @ORM\JoinColumn(name="tracking*click_id", referencedColumnName="tracking_click*id"), * @ORM\JoinColumn(name="tracking*site_id", referencedColumnName="tracking_site*id") * }) */ private $click; } ``` I have been poking around in Doctrine\ORM\Tools\SchemaValidator (L:215). ``` var_dump($identifierColumns, $assoc['joinColumns']); array(2) { [0] => string(17) "tracking*click*id" [1] => string(16) "tracking*site*id" } array(1) { [0] => array(6) { 'name' => string(17) "tracking*click*id" 'unique' => bool(false) 'nullable' => bool(true) 'onDelete' => NULL 'columnDefinition' => NULL 'referencedColumnName' => string(17) "tracking*click*id" } } ```
admin added the Bug label 2026-01-22 14:34:42 +01:00
Author
Owner

@vinise commented on GitHub (Mar 28, 2016):

Any update about this bug?
Thanks :)

@vinise commented on GitHub (Mar 28, 2016): Any update about this bug? Thanks :)
Author
Owner

@drupol commented on GitHub (Dec 2, 2020):

I just tested with doctrine/orm 2.8.x-dev and this demo repo I cannot reproduce the issue.

I guess this can be closed.

@drupol commented on GitHub (Dec 2, 2020): I just tested with doctrine/orm 2.8.x-dev and [this demo repo](https://github.com/drupol/composite) I cannot reproduce the issue. I guess this can be closed.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#4075