Entity 中 Column 的参数解释

Entity是什么呢?   
在某种角度上,我们可以认为他是MVC中的Model层。不过Entity相当于一个数据建模的class.我们可以给这个class定义一些属性(每个属性最好对应一个数据库字段。)。如果对doctrine2不是很熟,最好不要在Entity中玩太多花子。容易把自己绕进去。建议这个里面 只放一些持久性的数据与get set方法。Entity中不能含有final属性或者final方法      下面是一个是讲一个php类文件映射为Entity的属性为table的columns(列).

<?php
/** @Entity */
class Message
{
    /** @Column(type="integer") */
    private $id;
    /** @Column(length=140) */
    private $text;
    /** @Column(type="datetime", name="posted_at") */
    private $postedAt;
}

@column的注释有很多种属性。下面是一个完整的列表

  • type (可选的,默认为“string”)    映射的column类型。
  • name (可选的,默认为字段名)      映射的column名称。
  • length (可选,默认255)            映射的column长度,只适用于字符串。
  • unique (可选,默认false)表示是否是一个unique键。
  • nullable (可选,默认false)表示column是否可以为空。
  • precision (可选,默认0)的精度小数 (具体数字)列(只适用于十进制列), 这是最大数量的数字存储值。
  • scale (可选,默认0)小数(确切的规模 为十进制数值)列(只适用于列),代表 数字的位数小数点右边的和必须的 不大于 precision 。
  • columnDefinition (可选):允许定义一个自定义的 DDL片段用于创建列。 警告:这通常 混淆SchemaTool总是检测列变化。
  • options (可选):键值对的选项获得通过 当生成DDL语句到底层数据库平台。

Column /  type  的多种类型列表。

  • string :SQL VARCHAR类型映射到PHP字符串。
  • integer :SQL INT类型映射到PHP整数。
  • smallint :类型映射数据库SMALLINT PHP 整数(短整型)。
  • bigint :类型地图数据库BIGINT PHP字符串(长整型)。
  • boolean :类型映射SQLbooleanequivalent (非常小的整数)PHP布尔型。
  • decimal :SQL十进制类型映射到PHP字符串。
  • date :SQL DATETIME类型映射到PHP DATETIME 对象。
  • time :类型映射SQL时间一个PHP DateTime对象。
  • datetime :类型映射SQL DATETIME PHP /时间戳 DateTime对象。
  • datetimetz :类型映射SQL DATETIME PHP /时间戳 DateTime对象与时区。
  • text :SQL CLOB类型映射到PHP字符串。
  • object :SQL CLOB类型映射到PHP对象使用 serialize() 和 unserialize()
  • array :SQL CLOB类型映射到PHP数组 serialize() 和 unserialize()
  • simple_array :SQL CLOB类型映射到PHP数组 implode() 和 explode()  ,用逗号作为分隔符。重要: 只使用这种类型,如果你确信你的价值观不能包含一个“,”。
  • json_array :SQL CLOB类型映射到PHP数组 json_encode() 和 json_decode()
  • float :类型映射SQL(双精度)浮动 PHP的两倍。 重要:只能使用区域设置 小数点分隔符。
  • guid :类型地图数据库GUID / UUID PHP字符串。 默认为 varchar但使用特定类型的平台是否支持它。
  • blod :SQL BLOB类型映射到PHP资源流

当然,也可以自定义自己的Column / type 

这里是链接地址:http://docs.doctrine-project.org/en/latest...

Identifiers / Primary Keys(标识符/主键)

每一个Entity必须要有一个Identifiers / Primary Keys,可以选择@id注释来实现。如果是phpclass的话,

<?php
class Message
{
    /**
     * @Id @Column(type="integer")
     * @GeneratedValue
     */
    private $id;
    //...
}

当然。如果你用的symfony。那么这块的@id,@Column应该为 @ORM\Id    @ORM\Column,上面一般都是这种引用,use Doctrine\ORM\Mapping as ORM;

这些资料都是我自己整理的,希望可以帮到大家。
 

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!