thinkphp如果表名有下划线需要用Model
模型命名規(guī)范
ThinkPHP 對數(shù)據(jù)庫的表名和模型類的命名遵循一定的規(guī)范。首先數(shù)據(jù)庫的表名和字段全部采用小寫形式,模型類的命名規(guī)則是除去表前綴的數(shù)據(jù)表名稱,并且首字母大寫,然后加上模型類的后綴定義。一些例子如下:
| user | UserModel | UserModel.class.php | class UserModel extends Model{} |
| user_group | UserGroupModel | UserGroupModel.class.php | class UserGroupModel extends Model{} |
提示:系統(tǒng)以駝峰命名法來識別帶下劃線的表名。
當(dāng)項目中的表命名規(guī)則和 ThinkPHP 中的約定不符時(常常會有這種情況),ThinkPHP 允許對 Model 類的 tableName 和 trueTableName 屬性進(jìn)行設(shè)置以達(dá)到兼容的目的。
tableName 屬性
當(dāng)表前綴和系統(tǒng)設(shè)置的前綴(DB_PREFIX)一致而表名和模型名稱不一致時,可設(shè)置此屬性,例如表名稱為 users ,而模型名稱為 UserModel ,那么需要在模型類設(shè)置:
class UserModel extends Model{protected $tableName = 'users'; }trueTableName 屬性
如果表的前綴跟系統(tǒng)設(shè)定的不一致(表名和模型名可能一致)時,需要設(shè)定模型的 trueTableName 屬性:
class UserModel extends Model{protected $trueTableName = 'my_user'; }注意 trueTableName 值為完整的表名(包括前綴)。
dbName 屬性
dbName 屬性定義模型當(dāng)前對應(yīng)的數(shù)據(jù)庫名稱,只有當(dāng)前的模型類對應(yīng)的數(shù)據(jù)庫名稱和配置文件不同的時候才需要定義:
protected $dbName = 'cdb'; 表:think_hello_world模型:HelloWorldModel.class.php
代碼
就這樣,就已經(jīng)是操作think_hello_world表了啊 Hassan2014年08月20日 你就不能認(rèn)真看手冊么?有人回答你了,你還扯著trueTableName 屬性不放... 回復(fù)Keith_hzw2014年08月20日 如果以前用3.1寫的數(shù)據(jù)庫表有下劃線,難道你更新到3.2就把數(shù)據(jù)庫的表的名字全改了嗎 yurke2014年08月19日 手冊上有明確說明的。使用首字母大寫,后面的用駝峰 回復(fù)Keith_hzw2014年08月19日 如果你的表有下劃線?還能用駝峰法?protected $trueTableName = "goods_class"; 這句會把本應(yīng)該 前綴_goods_class 改為 前綴.goods_class 回復(fù)yurke2014年08月19日 回復(fù) Keith_hzw : 你有注意到別人的發(fā)言嗎?首先首字母大寫,然后任何下劃線都去掉緊接著的字母大寫。D('GoodsClass');有注意到這個C大寫嗎??? 回復(fù)yurke2014年08月19日 回復(fù) Keith_hzw : 還有你的文件名就有問題,同理文件名也要這樣寫的。你在文件名也加下劃線,你質(zhì)疑別人可以,但是好歹也先看下手冊。 回復(fù)yurke2014年08月19日 回復(fù) Keith_hzw : GoodsClassModel.class.php這才是對應(yīng)你表名的文件名,基本規(guī)范建議遵守 Keith_hzw2014年08月19日 你說D('Goodsclass'),再在里面加protected $trueTableName = "goods_class"; 這句來確定表名吧,,但如果表名有下滑線,會出錯 aphpyzr2014年08月19日 D('GoodsClass'); 回復(fù)云端o楓o02014年08月20日 此乃正解,樓主建議你多看看手冊,還有命名規(guī)范里的說明!
轉(zhuǎn)載于:https://www.cnblogs.com/caicaizi/p/5603274.html
總結(jié)
以上是生活随笔為你收集整理的thinkphp如果表名有下划线需要用Model的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【drp 11】使用Junit简单测试接
- 下一篇: php使用Header函数,PHP_AU