/master/zh-CN/db/entity.html

TOC

实体定义

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

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

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

注解标签

@Entity

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

参数:

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

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

@Table

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

@Column

参数:

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

说明:

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

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

@Id

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

快速生成实体类

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

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

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

示例

/**
 * @Entity()
 * @Table(name="user")
 */
class User extends Model
{
    /**
     * 主键ID
     *
     * @Id()
     * @Column(name="id", type=Types::INT)
     * @var null|int
     */
    private $id;

    /**
     * 名称
     *
     * @Column(name="name", type=Types::STRING, length=20)
     * @Required()
     * @var null|string
     */
    private $name;

    /**
     * 年龄
     *
     * @Column(name="age", type=Types::INT)
     * @var int
     */
    private $age = 0;

    /**
     * 性别
     *
     * @Column(name="sex", type="int")
     * @var int
     */
    private $sex = 0;

    /**
     * 描述
     *
     * @Column(name="description", type="string")
     * @var string
     */
    private $desc = "";

    /**
     * 非数据库字段,未定义映射关系
     *
     * @var mixed
     */
    private $otherProperty;

    /**
     * @return int|null
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param int|null $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }

    /**
     * @return null|string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param null|string $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    /**
     * @return int
     */
    public function getAge(): int
    {
        return $this->age;
    }

    /**
     * @param int $age
     */
    public function setAge(int $age)
    {
        $this->age = $age;
    }

    /**
     * @return int
     */
    public function getSex(): int
    {
        return $this->sex;
    }

    /**
     * @param int $sex
     */
    public function setSex(int $sex)
    {
        $this->sex = $sex;
    }

    /**
     * @return string
     */
    public function getDesc(): string
    {
        return $this->desc;
    }

    /**
     * @param string $desc
     */
    public function setDesc(string $desc)
    {
        $this->desc = $desc;
    }

    /**
     * @return mixed
     */
    public function getOtherProperty()
    {
        return $this->otherProperty;
    }

    /**
     * @param mixed $otherProperty
     */
    public function setOtherProperty($otherProperty)
    {
        $this->otherProperty = $otherProperty;
    }
}
progress-bar