繁体   English   中英

原则PHP关联symfony3

[英]Doctrine PHP associations symfony3

我该怎么办? 我需要稳定打印机,碳粉,胶带和墨水之间的学说关联。 一台打印机可以只使用其中的一种{墨粉,胶带,墨水}。

但是我不确定什么是最好的方法。 我想使用最佳实践(OOP)。

在此处输入图片说明

Doctrine2支持继承映射 –您可以使用它:

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

    /**
     * @ORM\OneToOne(targetEntity="Consumable")
     */
    private $consumable;
}

/**
 * @ORM\Entity
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="discr", type="string")
 * @ORM\DiscriminatorMap({"toner" = "Toner", "ink" = "Ink"})
 */
abstract class Consumable
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="created_at", type="datetime")
     */
    private $createdAt;


    /**
     * @var \DateTime
     *
     * @ORM\Column(name="updated_at", type="datetime")
     */
    private $updatedAt;
}


/**
 * @ORM\Entity
 */
final class Toner extends Consumable
{}

/**
 * @ORM\Entity
 */
final class Ink extends Consumable
{}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM