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

在网站开发的时候经常需要用到多语言的网站版本,这里我们介绍一种巧用模型的后缀来实现的多语言表的连接。
假如我们需要存储网站的三个语言版本的数据,包括:简体中文、繁体中文和英文。
假设分别对应了数据库的三个表(以新闻表为例)
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

No Responses to “巧用模型的表后缀实现多语言数据存储”

Leave a Reply:

Name (required):
Mail (will not be published) (required):
Website:
Comment (required):
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>