【问题标题】:Can`t think of better way to model the database想不出更好的数据库建模方法
【发布时间】:2015-04-22 09:38:45
【问题描述】:

我正在尝试创建一个演示项目,其中有 3 个表:categorymodeltype

可能有不同的类别,例如cellphonetabletscomputer等。每个类别都有不同的类型,例如cellphone可能有asusiphonenokia 等。同样,每种类型都有不同的模型:诺基亚可能有 nokialumianokia n97 等。如何在 symfony2 中使用注释创建这个数据库?

【问题讨论】:

  • 第一步是尝试
  • 关注 Symfony2 文档。当你偶然发现一个问题时,打开一个包含你的代码的问题。
  • 这个问题很可能被关闭,因为你还没有展示你已经尝试过的东西。另外,请注意,您说的是类别和类型、类型和模型之间的“一对多关系”。

标签: php database symfony doctrine


【解决方案1】:

代码没那么复杂:

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity()
 */
class Category
{   
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\Column(type="string", length=255)
     */
    private $name;
    /**
     * @ORM\OneToMany(targetEntity="Model", mappedBy="category")
     */
    private $models;
}


/**
 * @ORM\Entity()
 */
class Model
{   
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $name;
    /**
     * @ManyToOne(targetEntity="Category", inversedBy="models")
     * @JoinColumn(name="category_id", referencedColumnName="id")
     **/        
    private $category;

    /**
     * @ORM\OneToMany(targetEntity="Type", mappedBy="model")
     */
    private $types;
}


/**
 * @ORM\Entity()
 */
class Type
{   
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\Column(name="type", type="string", length=255)
     */
    private $name;
    /**
     * @ManyToOne(targetEntity="Model", inversedBy="types")
     * @JoinColumn(name="model_id", referencedColumnName="id")
     **/        
    private $model;
}

在文件中添加代码后,运行以下命令: php app/console doctrine:generate:entities 它会生成setter、getter和构造函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2020-08-16
    • 2021-07-11
    • 2014-02-26
    相关资源
    最近更新 更多