巧用模型的表后缀实现多语言数据存储

在网站开发的时候经常需要用到多语言的网站版本,这里我们介绍一种巧用模型的后缀来实现的多语言表的连接。
假如我们需要存储网站的三个语言版本的数据,包括:简体中文、繁体中文和英文。
假设分别对应了数据库的三个表(以新闻表为例)
think_new_cn 简体中文(默认语言)
think_new_tw 繁体中文
think_new_en 英文
并且假设三个表的结构是一致的,只是表名不同。

然后,我们创建New模型如下:(注意我们只是创建了一个模型,而不是创建三个模型)

class NewModel extends Model{
// 默认是简体中文
protected $tableSuffix = ‘_cn’;
public function changeLang($lang){
$this->trueTableName =”; // 重置trueTableName属性 避免表名缓存
$this->tableSuffix = ‘_’.$lang; // 切换表的语言后缀
return $this;
}
}

$New = D(‘New’);
$list = $New->select(); // 查询简体中文
$New->changeLang(‘tw’)->select(); // 切换到繁体中文表
$New->changeLang(‘en’)->select(); // 切换到英文表
$New->changeLang(‘cn’); // 切换回简体中文
affiliate_link
Share this Post:
Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

Comments are closed.