实体定义

无论是高级查询还是基础查询,都会需要一个表实体。一个表字段和一个类属性是一一映射,对类的操作相当于对表的操作,该类称为一个实体

  • 一个实体类对应一张数据库的表结构
  • 实体对象代表了表的一行数据记录

注意: 实体不能作为属性被注入到任何类, 因为每个实体对象都是不同的数据记录行。实体对象都是在哪用就在哪里创建它。

注解标签

@Entity

标记一个类是一个实体,无需多余参数

参数:

  • instance 定义实体对应实例,默认 default 实例 对,就是前面配置上的那个default实例:)

若需使用基础查询,必须继承Model

@Table

  • name 定义该实体映射的数据库表名

@Column

参数:

  • name 定义类属性映射的表字段,没该注解标记的属性,不映射
  • type 定义字段数据更新时验证类型,暂时提供常见的数据类型延迟,后续会更多

说明:

  • 若定义type,可定义其它验证条件
  • 所有字段属性,必须要有gettersetter方法

类属性默认值即是表字段默认值

@Id

该注解标明当前类属性对应了数据库表中的主键,必须有这个注解标记

快速生成实体类

swoft 提供了内置命令帮助快速生成实体类。

  1. php bin/swoft entity:create -d dbname mytable,table2

更多使用信息请查看 命令创建实体 或者使用 -h 查看命令帮助信息

示例

  1. /**
  2. * @Entity()
  3. * @Table(name="user")
  4. */
  5. class User extends Model
  6. {
  7. /**
  8. * 主键ID
  9. *
  10. * @Id()
  11. * @Column(name="id", type=Types::INT)
  12. * @var null|int
  13. */
  14. private $id;
  15. /**
  16. * 名称
  17. *
  18. * @Column(name="name", type=Types::STRING, length=20)
  19. * @Required()
  20. * @var null|string
  21. */
  22. private $name;
  23. /**
  24. * 年龄
  25. *
  26. * @Column(name="age", type=Types::INT)
  27. * @var int
  28. */
  29. private $age = 0;
  30. /**
  31. * 性别
  32. *
  33. * @Column(name="sex", type="int")
  34. * @var int
  35. */
  36. private $sex = 0;
  37. /**
  38. * 描述
  39. *
  40. * @Column(name="description", type="string")
  41. * @var string
  42. */
  43. private $desc = "";
  44. /**
  45. * 非数据库字段,未定义映射关系
  46. *
  47. * @var mixed
  48. */
  49. private $otherProperty;
  50. /**
  51. * @return int|null
  52. */
  53. public function getId()
  54. {
  55. return $this->id;
  56. }
  57. /**
  58. * @param int|null $id
  59. */
  60. public function setId($id)
  61. {
  62. $this->id = $id;
  63. }
  64. /**
  65. * @return null|string
  66. */
  67. public function getName()
  68. {
  69. return $this->name;
  70. }
  71. /**
  72. * @param null|string $name
  73. */
  74. public function setName($name)
  75. {
  76. $this->name = $name;
  77. }
  78. /**
  79. * @return int
  80. */
  81. public function getAge(): int
  82. {
  83. return $this->age;
  84. }
  85. /**
  86. * @param int $age
  87. */
  88. public function setAge(int $age)
  89. {
  90. $this->age = $age;
  91. }
  92. /**
  93. * @return int
  94. */
  95. public function getSex(): int
  96. {
  97. return $this->sex;
  98. }
  99. /**
  100. * @param int $sex
  101. */
  102. public function setSex(int $sex)
  103. {
  104. $this->sex = $sex;
  105. }
  106. /**
  107. * @return string
  108. */
  109. public function getDesc(): string
  110. {
  111. return $this->desc;
  112. }
  113. /**
  114. * @param string $desc
  115. */
  116. public function setDesc(string $desc)
  117. {
  118. $this->desc = $desc;
  119. }
  120. /**
  121. * @return mixed
  122. */
  123. public function getOtherProperty()
  124. {
  125. return $this->otherProperty;
  126. }
  127. /**
  128. * @param mixed $otherProperty
  129. */
  130. public function setOtherProperty($otherProperty)
  131. {
  132. $this->otherProperty = $otherProperty;
  133. }
  134. }