ThinkPHP中对于特殊表的实例化操作
在实际开发的时候可能会遇到有特殊表的情况,可能表会没有前缀、表的前缀不是在配置文件中定义的前缀。
模拟出一张特殊表:
创建模型文件:
命名:TeshubiaoModel.class.php
<?php
//命名空间
namespace Admin\Model;
//引入父类
use Think\Model;
//声明模型并继承父类
class TeshubiaoModel extends Model{
}
teshubiao类的实例化操作:
//特殊类的实例化操作
public function test(){
//实例化模型
$model = D('Teshubiao');
dump($model);
}
实例化结果:
分析原因:是因为在实例化的时候系统会默认给我们添加上之前在配置文件中定义的表前缀,这个时候表名就变成了oa_teshubiao。
解决办法:
// 实际数据表名(包含表前缀)
protected $trueTableName = '';
可以通过父类模型中的实际数据表名(包含表前缀)的声明来进行表名的指定,告知模型表名真实名字是什么,让其不要再关联上前缀。
<?php
//命名空间
namespace Admin\Model;
//引入父类
use Think\Model;
//声明模型并继承父类
class TeshubiaoModel extends Model{
// 实际数据表名(包含表前缀)
protected $trueTableName = 'teshubiao';
}
实例化模型结果正常: