gpt4 book ai didi

php - Doctrine Join 表以获得相同的 ID

转载 作者:行者123 更新时间:2023-11-28 23:30:39 25 4
gpt4 key购买 nike

我是 symfony 的初学者,我必须使用收集表格来制作一个网站来预订演出的门票。

界面很简单,用户选择他想要的票数,然后它显示尽可能多的表单原型(prototype)(输入姓名和姓氏)。这部分对我来说效果很好。

每次提交 = 新预订

我在 mysql 中有 2 个表“reservations”和“ticket”,我想在提交表单后得到这个渲染:

订位:

预订 id = "1"

预订 id = "2"

表坯:

Billet id="1"name="thomas", surname="good", reservation_id="1"

钢坯 id="2"name="laura", surname="senior", reservation_id="1"

钢坯 id="3"name="pierre", surname="martin", reservation_id="2"


问题是我得到了这个结果:

Billet id="1"name="thomas", surname="good", reservation_id="Null"

Billet id="2"name="laura", surname="senior", reservation_id="Null"


这是我的实体:

<?php

namespace Louvre\PagesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Billet
*
* @ORM\Table(name="billet")
* @ORM\Entity(repositoryClass="Louvre\PagesBundle\Repository\BilletRepository")
*/
class Billet
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @ORM\ManyToOne(targetEntity="Reservations", inversedBy="billets")
* @ORM\JoinColumn(name="reservations_id", referencedColumnName="id")
*/
protected $reservations;

/**
* @var string
*
* @ORM\Column(name="prenom", type="string", length=255)
*/
private $prenom;

/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*/
private $nom;


/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set prenom
*
* @param string $prenom
* @return Billet
*/
public function setPrenom($prenom)
{
$this->prenom = $prenom;

return $this;
}

/**
* Get prenom
*
* @return string
*/
public function getPrenom()
{
return $this->prenom;
}

/**
* Set nom
*
* @param string $nom
* @return Billet
*/
public function setNom($nom)
{
$this->nom = $nom;

return $this;
}

/**
* Get nom
*
* @return string
*/
public function getNom()
{
return $this->nom;
}
}


<?php

namespace Louvre\PagesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

use Doctrine\Common\Collections\ArrayCollection;

/**
* Reservations
*
* @ORM\Table(name="reservations")
* @ORM\Entity(repositoryClass="Louvre\PagesBundle\Repository\ReservationsRepository")
*/
class Reservations
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;


/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}


/**
* @ORM\OneToMany(targetEntity="Billet", mappedBy="reservations", cascade={"persist","remove"})
*/
protected $billets;


public function __construct()
{
$this->billets = new ArrayCollection();
}

public function getBillets()
{
return $this->billets;
}

public function setBillets(ArrayCollection $billets)
{
$this->billets = $billets;
}

}

最佳答案

你的命名有点乱......

我建议:

class Billet
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @ORM\ManyToOne(targetEntity="Reservation", inversedBy="billets")
* @ORM\JoinColumn(name="reservation_id", referencedColumnName="id")
*/
protected $reservation;

/**
* @var string
*
* @ORM\Column(name="prenom", type="string", length=255)
*/
private $prenom;

/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*/
private $nom;


/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set prenom
*
* @param string $prenom
* @return Billet
*/
public function setPrenom($prenom)
{
$this->prenom = $prenom;

return $this;
}

/**
* Get prenom
*
* @return string
*/
public function getPrenom()
{
return $this->prenom;
}

/**
* Set nom
*
* @param string $nom
* @return Billet
*/
public function setNom($nom)
{
$this->nom = $nom;

return $this;
}

/**
* Get nom
*
* @return string
*/
public function getNom()
{
return $this->nom;
}

public function setReservation(Reservation $reservation)
{
$this->reservation = $reservation;

return $this;
}

public function getReservation()
{
return $this->reservation;
}
}

预订实体

/**
* Reservation
*
* @ORM\Table(name="reservations")
* @ORM\Entity(repositoryClass="Louvre\PagesBundle\Repository\ReservationsRepository")
*/
class Reservation
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;


/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}


/**
* @ORM\OneToMany(targetEntity="Billet", mappedBy="reservations", cascade={"persist","remove"})
*/
protected $billets;


public function __construct()
{
$this->billets = new ArrayCollection();
}

public function getBillets()
{
return $this->billets;
}

public function addBillet(Billet $billet)
{
if (!$this->billets->contains($billet))
{
$this->billets->add($billet);
$billet->setReservation($this);
}

return $this;
}

public function removeBillet(Billet $billet)
{
// you can implement for collection
}

public function setBillets($billets)
{
$this->billets = new ArrayCollection();

foreach ($billets as $billet)
{
$this->addBillet($billet)
}

return $this;
}

}

关于php - Doctrine Join 表以获得相同的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37421087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com