8.2. Modal使用

8.2.1. 简单使用

Modal 是对 SQL 数据的一个面向对象的封装,数据加载到对象内部,对象会记住关联的数据表和记录,之后就可以直接采用对象的方法对数据表中的记录进行操作。

Modal 一个简单用法:

// SqlMapper 是真正的实现
use Core\Modal\SqlMapper as DataMapper;

// 标明 dataMapper 和 goods_comment 表关联
$dataMapper = new DataMapper('goods_comment');

// 查询数据,注意我们用的是 load 方法
$dataMapper->loadOne(array('rec_id = ?', $rec_id), null, 0);

// 显示数据
echo $dataMapper->rec_id;

从上面的代码可以看到,构造函数为 表名,通过构造函数 Modal 就关联了对应的数据表,而后我们通过调用 DataMapper 的方法来取得数据。DataMapper 有很多方法,具体可以参见代码。

[注意]

为什么老说 Modal ,这明明是 SqlMapper 啊? 是的,Modal 是我们的抽象叫法,因为在 bzfshop 的设计里面数据的存储叫 Modal,但是这个设计并没有说数据一定要存储在数据库里面。事实上,我们希望数据能够存放在各种系统中,比如 Mongodb、Memcache、json file … ,虽然目前我们只实现了 SqlMapper 用于存放到最常见的数据库中,但是将来有可能数据并不一定会存放于数据库。

8.2.2. tableName方法

bzfshop 支持给数据表加上 前缀,例如 bzf_,所以你查询的时候写表名为 users,其实最终的表名为 bzf_users。如果你是使用 BaseService,Modal 做查询的话,那你完全不用考虑表名前缀的问题,因为这些系统会自动给你加上表名前缀。但是,如果你是用很复杂的查询方式,或者是直接使用原始的 SQL 做查询,那么你应该用 tableName() 方法来取得真实的表名。

// 自己拼接 SQL,使用 tableName 取得真实的表名
$sql = 'select * from '.DataMapper::tableName('users');
[警告]

请一定使用 tableName() 方法取得表名,而不是直接用 bzf_ + users,因为别人有可能安装的时候表名前缀不是 bzf_

8.2.3. 更多用法

bzfshop 的 Modal 是对 Fat Free Framework 的简单扩展,如果你想更多的了解 Modal 的使用方法,请查看 Fat Free Framework 的官方文档。