天天看點

Yii 2 —— Model表字首

在大多數系統中,對于資料庫的表名稱都喜歡在前面增加一個字首,譬如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,如需轉載請自行聯系原作者