\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

Retrieve record by primary key

Parameters

\long $id

primary key

\string/array $fields

the fileds to be retrieved, such as: name,from in string, or: array('name', 'from') in array

Returns

array —

table record, or return false when not found

insert()

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

Insert new record

it seems bo be a little strange, but the foreign key $id is required if we want to save data into multi tables

Parameters

array $data

data to be inserted, including the filed ext_data

\long $id

foreign key

Returns

\long —

the id of new record

update()

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

Update record by primary key

Parameters

\long $id

primary key

array $data

data to be updated, including the filed ext_data

Returns

\TRUE/FALSE

delete()

delete(\long  $id) : \TRUE/FALSE

Delete record by primary key

Parameters

\long $id

primary key

Returns

\TRUE/FALSE

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()