如何通过条令2创建子属性表(基本上类似于连接表,但另一侧没有实体)。我是否需要为它创建一个单独的实体(我知道如果我使用一个联接表创建一个ManyToMany,它只会在db中创建联接表,而不会创建实体)。
i、 我有工作指令,可以有一堆指定的工作日期。我想把这些日期填满一张桌子
______________________
| Orders |
|____________________|
id
1
2
3
______________________
| Order_Dates |
|____________________|
order_id | Date
1 | 2019-01-01
1 | 2019-05-01
2 | 2019-01-01
2 | 2019-02-01
2 | 2019-03-01
3 | 2019-01-02
3 | 2019-01-05
基本上到目前为止
class Orders
{
public function __construct()
{
$this->dates = new ArrayCollection();
}
/**
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $id;
/**
* One Order has Many Dates
*/
private $dates;
public function getDates() : ArrayCollection
{
return $this->dates;
}
public function addDate(\DateTime $date): self
{
$this->dates->add($date);
return $this;
}
public function setDates(ArrayCollection $dates): self
{
$this->dates = $dates;
return $this;
}
}
从
订单实体,而不是映射。我在照片上看到的一切
doctrine association documentation
在这里似乎期待某种映射(也许我看错了?)
编辑:
这是我的控制器:
订单
/**
* @ORM\OneToMany(targetEntity="OrderDates", mappedBy="order", cascade={"persist", "remove"}, orphanRemoval=TRUE)
*/
private $dates;
...
public function getDates() : PersistentCollection
{
return $this->dates;
}
public function addDate(\DateTime $date): self
{
$orderDate = new OrderDates();
$orderDate->setDate($date);
$orderDate->setOrder($this);
$this->dates[] = $orderDate;
return $this;
}
public function setDates(array $dates): self
{
foreach($dates as $date)
{
$this->addDate(new \DateTime($date));
}
return $this;
}
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\OrderDatesRepository")
*/
class OrderDates
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="datetime")
*/
private $date;
/**
* @ORM\ManyToOne(targetEntity="Orders", inversedBy="dates")
*/
private $order;
public function getId(): ?int
{
return $this->id;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
public function getOrder(): Orders
{
return $this->order;
}
public function setOrder(Orders $order): self
{
$this->order = $order;
return $this;
}
}