在大多數系統中,對于資料庫的表名稱都喜歡在前面增加一個字首,譬如ecshop系統的表名稱,都有字首“ecs_”,在它們的代碼中到處充斥着如下代碼:
$GLOBALS['ecs']->table('goods')
這種代碼的目的是把字首“ecs”和後面的名稱拼接起來獲得“ecs_goods”這樣實際的表名稱。為什麼不直接拼接字元串“ecs_”和“goods”?因為在安裝時,是可以自己配置表字首的,是以這裡不能固定寫死用字元串拼接。
在Yii的體系裡,資料庫的表是跟model對應的,表名稱是在Model類的tableName()函數中傳回的,為了處理表字首的問題,在這個函數中傳回表名稱時,可以采用類似如下代碼:
public static function tableName()
{
return '`user`';
}
可以看到,傳回使用者表名稱不是直接傳回user,而是`user`,在實際從資料庫提取資料時,将%替換為表字首。
如何配置應用的表字首呢?在main.php的db參數中進行配置:
return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=liduoo',
'username' => 'root',
'password' => 'mysql',
'charset' => 'utf8',
'tablePrefix' => 'abc_',
],
],
];
本文轉自 tywali 51CTO部落格,原文連結:http://blog.51cto.com/lancelot/1871258,如需轉載請自行聯系原作者