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
:类型映射SQLboolean或equivalent (非常小的整数)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;
这些资料都是我自己整理的,希望可以帮到大家。