<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 模型定義 [上一頁](# "上一頁")[下一頁](# "下一頁") ### 模型定義 > 模型類并非必須定義,只有當存在獨立的業務邏輯或者屬性的時候才需要定義。 模型類通常需要繼承系統的\Think\Model類或其子類,下面是一個Home\Model\UserModel類的定義: ~~~ namespace Home\Model; use Think\Model; class UserModel extends Model { } ~~~ 模型類的作用大多數情況是操作數據表的,如果按照系統的規范來命名模型類的話,大多數情況下是可以自動對應數據表。 模型類的命名規則是除去表前綴的數據表名稱,采用駝峰法命名,并且首字母大寫,然后加上模型層的名稱(默認定義是Model),例如: | 模型名 | 約定對應數據表(假設數據庫的前綴定義是 think_) | |-----|-----| | UserModel | think_user | | UserTypeModel | think_user_type | 如果你的規則和上面的系統約定不符合,那么需要設置Model類的數據表名稱屬性,以確保能夠找到對應的數據表。 ### 數據表定義 在ThinkPHP的模型里面,有幾個關于數據表名稱的屬性定義: | 屬性 | 說明 | |-----|-----| | tablePrefix | 定義模型對應數據表的前綴,如果未定義則獲取配置文件中的DB_PREFIX參數 | | tableName | 不包含表前綴的數據表名稱,一般情況下默認和模型名稱相同,只有當你的表名和當前的模型類的名稱不同的時候才需要定義。 | | trueTableName | 包含前綴的數據表名稱,也就是數據庫中的實際表名,該名稱無需設置,只有當上面的規則都不適用的情況或者特殊情況下才需要設置。 | | dbName | 定義模型當前對應的數據庫名稱,只有當你當前的模型類對應的數據庫名稱和配置文件不同的時候才需要定義。 | 舉個例子來加深理解,例如,在數據庫里面有一個`think_categories`表,而我們定義的模型類名稱是`CategoryModel`,按照系統的約定,這個模型的名稱是Category,對應的數據表名稱應該是`think_category`(全部小寫),但是現在的數據表名稱是`think_categories`,因此我們就需要設置`tableName`屬性來改變默認的規則(假設我們已經在配置文件里面定義了`DB_PREFIX` 為 think_)。 ~~~ namespace Home\Model; use Think\Model; class CategoryModel extends Model { protected $tableName = 'categories'; } ~~~ 注意這個屬性的定義不需要加表的前綴`think_` 如果我們需要CategoryModel模型對應操作的數據表是 `top_category`,那么我們只需要設置數據表前綴即可: ~~~ namespace Home\Model; use Think\Model; class CategoryModel extends Model { protected $tablePrefix = 'top_'; } ~~~ 如果你的數據表直接就是`category`,而沒有前綴,則可以設置`tablePrefix`為空字符串。 ~~~ namespace Home\Model; use Think\Model; class CategoryModel extends Model { protected $tablePrefix = ''; } ~~~ > 沒有表前綴的情況必須設置,否則會獲取當前配置文件中的 `DB_PREFIX`。 而對于另外一種特殊情況,我們需要操作的數據表是`top_categories`,這個時候我們就需要定義 `trueTableName` 屬性 ~~~ namespace Home\Model; use Think\Model; class CategoryModel extends Model { protected $trueTableName = 'top_categories'; } ~~~ > 注意`trueTableName`需要完整的表名定義。 除了數據表的定義外,還可以對數據庫進行定義(用于操作當前數據庫以外的數據表),例如 `top.top_categories`: ~~~ namespace Home\Model; use Think\Model; class CategoryModel extends Model { protected $trueTableName = 'top_categories'; protected $dbName = 'top'; } ~~~ > 系統的規則下,tableName會轉換為小寫定義,但是trueTableName定義的數據表名稱是保持原樣。 [上一頁](# "上一頁")[下一頁](# "下一頁")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看