Skip to content

Latest commit

 

History

History
127 lines (101 loc) · 3.09 KB

3实体.md

File metadata and controls

127 lines (101 loc) · 3.09 KB

实体类

实体类的实例

<?php
namespace PheroTest\DatabaseTest\Unit;

use PheroTest\DatabaseTest\Traits\Truncate;
use Phero\Database\DbUnit;
/**
 * @Table[name=Mother,alias=mother]
 */
class Mother extends DbUnit
{
    use Truncate;
    /**
     * @Primary
     * @Foreign[rel=info]
     * @Field[name=id,alias=mother_id,type=int]
     * @var [type]
     */
    public $id;
    /**
     * 
     * @Field
     * @var [type]
     */
    public $name;

    /**
     * @Relation[type=oo,class=PheroTest\DatabaseTest\Unit\MotherInfo,key=mid]
     * @var [type]
     */
    public $info;
}

我们只要继承DbUnit类就行

并且 use Truncate 这个trait

几个注解

  • @Table
    • name:表的真实名称
    • alias:表的别名 会出现在sql中的 as
  • @Field
    • name:字段的真实名称
    • alias:字段的别名
    • type:字段的类型 {目前只有string和int的区别}
  • @Primary 表示这个是表的主键
  • @Foreign
    • rel:表示关联的是本表的那个关联字段
  • @Relation
    • type:{oo:一对一 om:一对多}
    • class:关联的Unit的类名
    • key:关联的Unit的具体的字段
  • @Entity
    • field: 需要查询出来包含的类
    • sort:排序
    • key:排序的键值

从数据库生成unit

我们只需要运行一个php文件就可以生成Unit文件到指定目录 cd到本包的根目录 把Phero文件拷贝到拷贝到vendor目录同级的目录 运行 直接运行Phero文件 输入如下的参数

./Phero builder --u root --p lerko --dir /home/lerko/Desktop/Db --db phero --namespace=\\Test\\Db Table1 Table2  //表名称不是必须的

Usage:
  builder [options] [--] [<tables>]...

Arguments:
  tables                     需要单独生成的表的名称

Options:
      --u[=U]                数据库链接的用户名 默认使用root [default: "root"]
      --p[=P]                数据库链接的密码 默认为空 [default: ""]
      --port[=PORT]          数据库的端口 [default: "3306"]
      --dir=DIR              生成的位置
      --namespace=NAMESPACE  用户生成Unit的命名空间
      --db=DB                生成unit对应的数据库
      --h=H                  数据库的远程地址 [default: "127.0.0.1"]
  -h, --help                 Display this help message
  -q, --quiet                Do not output any message
  -V, --version              Display this application version
      --ansi                 Force ANSI output
      --no-ansi              Disable ANSI output
  -n, --no-interaction       Do not ask any interactive question
  -v|vv|vvv, --verbose       Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  从创建unit实体

Unit的实例化

  • 方式1
$mother=new Mother();
  • 方式2
$mother=Mother::Inc();
Mother::lastInc()==$mother;//lastInc会等于最近的那个Inc

一些实用的Unit函数

FF([字段名称])==>生成字段的全称,包括所属的表以及别名 这个函数可以生成统一规范化的字段名

Mother::FF('id');

输出 : `mother`.`id`