<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                模型定義有幾個要素: 1. 通常會繼承think\Model(或者子類),虛擬模型除外; 2. 一個模型并不總是對應一個數據表(可能會有多個),雖然默認如此; 3. 模型名和數據表名也不是直接對應關系; 4. 盡管一個空模型和使用Db類無異,但意義不同; 模型定義階段要達成的目的: 1. 定義數據表(默認就是模型類名) 2. 定義數據表主鍵(默認會自動獲取) 3. 定義數據庫連接(默認使用數據庫配置) 4. 定義數據處理邏輯(包括屬性和方法) 5. 定義業務邏輯(方法) 下面的定義是不需要或者不支持的: 1. 數據表字段(不需要,會自動獲取,并支持緩存機制) 2. 數據表前綴(不支持,模型不關心前綴) 大多數情況下,數據表和數據庫連接是不需要定義的,**數據處理邏輯和業務邏輯才是模型定義的重點**,如果你發現你的大多數模型類都是什么都沒定義,那么就要思考下哪里出問題了,為什么你的模型成了形式和擺設。是沒業務需要還是職責分工有問題了?也許你在控制器中大量使用Db類進行業務邏輯處理。無論怎樣,現在糾正思維,跟著教程擁抱和學習模型吧。 一個模型并不總是對應一個數據表(例如關聯模型和聚合模型),但大多數情況下對應的是一個數據表,默認的對應關系是:模型類的名稱(注意不一定是類名,后面會解釋)轉換為小寫和下劃線就是對應的數據表: |模型名 |對應數據表| |--|--| |User |user| |UserType |user_type| 如果你的數據庫配置定義了前綴(假設數據庫的前綴定義是 think_),那么對應關系就是: |模型名 |對應數據表| |--|--| |User |think_user| |UserType |think_user_type| 如果你的對應規則和上面的系統約定不符合,那么需要設置模型類的數據表名稱屬性,以確保能夠找到對應的數據表。 代碼如下: ~~~ <?php namespace app\index\model; use think\Model; class User extends Model { protected $table = 'user_info'; } ~~~ table屬性定義的是完整數據表名,如果你希望定義不帶前綴的數據表名,可以使用name屬性來定義模型的名稱。 ~~~ <?php namespace app\index\model; use think\Model; class User extends Model { protected $name = 'user_info'; } ~~~ 如果你同時定義了這兩個屬性,那么table屬性是優先的。 調用模型類的方法其實和調用一個普通的類沒有區別,不要覺得模型類有什么特殊。 模型操作的話,就可以對應下面的代碼實現: ~~~ // 查詢操作 $user = User::get(1); // 取值操作 echo $user->name; echo $user->email; // 設置操作 $user->name = 'topthink'; $user->email = 'thinkphp@qq.com'; // 更新操作 $user->save(); ~~~ 事實上,由于模型類實現了ArrayAccess接口,因此一樣可以使用數組方式操作: ~~~ // 查詢操作 $user = User::get(1); // 取值操作 echo $user['name']; echo $user['email']; // 設置操作 $user['name'] = 'topthink'; $user['email'] = 'thinkphp@qq.com'; // 更新操作 $user->save(); ~~~ 如果是在模型內部進行取值和設置操作怎么辦?正確的獲取方式應該是: ~~~ // 模型內部讀取數據 echo $this->getData('name'); echo $this->getAttr('email'); // 模型內部設置數據 $this->data('name','thinkphp'); $this->setAttr('email','thinkphp@qq.com'); ~~~ 對象化操作的神奇是可以級聯讀取或者設置,例如: ~~~ // 查詢操作 $user = User::get(1); // 取值操作 echo $user->name; echo $user->email; // 關聯取值 echo $user->role->name; echo $user->contact->phone; // 設置操作 $user->name = 'topthink'; $user->email = 'thinkphp@qq.com'; // 更新操作 $user->save(); // 關聯設置 $user->role->name = 'admin'; $user->role->save(); $user->contact->phone = '123456789'; $user->contact->save(); ~~~ 這里使用了模型關聯的概念 * * * * * [參考鏈接](http://www.hmoore.net/thinkphp/master-database-and-model/265556)
                  <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>

                              哎呀哎呀视频在线观看