\PhalApi_Model_NotORM

PhalApi_Model_NotORM 基于NotORM的Model基类

  • 我们这里对ext_data使用json而不是序列化,是为了更容易阅读、理解、测试
  • 可重写formatExtData() & parseExtData()重新定制针对序列化LOB的转换
  • 具体子类需要实现getTableName($id)以提供对应的表名或者分表名
  • 对于如何寻找表主键,我们将配置中全部的表(包括分表)对应的主键进行了装配,如果觉得有性能问题,可重写getTableKey($table);这是一个手动和自动的问题

Summary

Methods
Properties
Constants
get()
insert()
update()
delete()
No public properties found
No constants found
formatExtData()
parseExtData()
getTableName()
getTableKey()
getORM()
loadTableKeys()
$tableKeys
N/A
No private methods found
No private properties found
N/A

Properties

$tableKeys

$tableKeys : 

Type

Methods

get()

get(\long  $id, \string/array  $fields = '*') : array

根据主键读取纪录

Parameters

\long $id

纪录主键

\string/array $fields

需要获取的表字段,可以为字符串(如:name,from)或数组(如:array('name', 'from'))

Returns

array —

数据库表纪录

insert()

insert(array  $data,   $id = NULL) : \long

插入新纪录 这里看起来有点奇怪,但如果我们需要进行分表存储,这里的参考主键是需要的

Parameters

array $data

待插入的数据,可以包括ext_data字段

$id

分表参考主键

Returns

\long —

新插入纪录的主键值

update()

update(\long  $id, array  $data) : \TRUE/FALSE

根据主键更新纪录

Parameters

\long $id

主键

array $data

待更新的数据,可以包括ext_data字段

Returns

\TRUE/FALSE

delete()

delete(  $id) 

根据主键删除纪录

Parameters

$id

formatExtData()

formatExtData(  $data) 

对LOB的ext_data字段进行格式化(序列化)

Parameters

$data

parseExtData()

parseExtData(  $data) 

对LOB的ext_data字段进行解析(反序列化)

Parameters

$data

getTableName()

getTableName(  $id) 

根据主键值返回对应的表名,注意分表的情况

默认表名为:[表前缀] + 全部小写的匹配表名

在以下场景下,需要重写此方法以指定表名

    1. 自动匹配的表名与实际表名不符
    1. 存在分表
    1. Model类名不含有Model_

Parameters

$id

getTableKey()

getTableKey(string  $table) : string

根据表名获取主键名

  • 考虑到配置中的表主键不一定是id,所以这里将默认自动装配数据库配置并匹配对应的主键名
  • 如果不希望因自动匹配所带来的性能问题,可以在每个实现子类手工返回对应的主键名
  • 注意分表的情况

Parameters

string $table

表名/分表名

Returns

string —

主键名

getORM()

getORM(\string/int  $id = NULL) : \NotORM_Result

快速获取ORM实例,注意每次获取都是新的实例

Parameters

\string/int $id

Returns

\NotORM_Result

loadTableKeys()

loadTableKeys()