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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 介紹 `think-orm`是一個基于PHP`5.6+` 的`ORM`實現,主要特性包括: - 基于ThinkPHP5.1的`ORM`封裝 - 支持`Mysql`/`Pgsql`/`Sqlite`/`SqlServer`/`Oracle`/`Mongodb` - 基于`PDO`實現 - 支持原生查詢和查詢構造器 - 支持事務 - 支持模型和關聯(和ThinkPHP內置一致) 應該說功能特性和`ThinkPHP`內置的`ORM`幾乎一致,適用于不使用`ThinkPHP`框架的開發者,對于習慣了ThinkPHP的ORM操作但不得已必須使用其它框架的用戶來說是一個福音。 >[danger] 本文主要列出一些基本用法和區別所在,以及一些注意事項,更多的詳細用法建議直接閱讀ThinkPHP5.1的官方手冊中關于[數據庫](http://www.hmoore.net/manual/thinkphp5_1/353997)和[模型](http://www.hmoore.net/manual/thinkphp5_1/354040)章節。 ## 安裝 如果你已經有自己的基于composer的應用了,可以直接使用`composer`安裝 ``` composer require topthink/think-orm ``` 如果暫時還沒有,可以創建一個目錄并添加`VHOST`進行測試, ``` mkdir orm cd orm composer require topthink/think-orm ``` 然后在orm目錄下面添加一個入口文件,寫法類似下面這樣。 ``` <?php namespace think; require __DIR__.'/vendor/autoload.php'; // 下面添加后面提到的測試代碼 ``` 目前最新版本為`V1.2.11`,功能和ThinkPHP`5.1`最新版本同步更新。 ## 數據庫配置 數據庫配置使用`Db::setConfig()`方法設置。 ```php use think\Db; // 數據庫配置信息設置(全局有效) Db::setConfig([ // 數據庫類型 'type' => 'mysql', // 服務器地址 'hostname' => '127.0.0.1', // 數據庫名 'database' => 'demo', // 用戶名 'username' => 'root', // 密碼 'password' => '', // 端口 'hostport' => '', ]); // 獲取數據庫配置信息 $dbConfig = Db::getConfig(); $database = Db::getConfig('database'); ``` 包目錄下的`src/config.php`文件提供了完整的配置參數以及默認配置(該配置文件會自動加載)。 為了方便統一管理,你可以通過在單獨文件中定義數據庫配置后加載。 ``` Db::setConfig(include '/config/database.php'); ``` ## 多數據庫和分布式支持 數據庫配置也支持配置多個數據庫連接,然后通過`connect()`方法動態切換連接。 ``` Db::setConfig([ 'mysql' => [...], 'mongo' => [...], ]); Db::connect('mysql')->name('user')->select(); ``` 當然,如果需要你仍然可以在`connect`方法中傳入實際的數據庫配置參數(數組)。 支持分布式數據庫,包括讀寫分離,具體可以參考5.1手冊的[分布式數據庫](http://www.hmoore.net/manual/thinkphp5_1/354039) ## CURD操作 數據庫CURD操作的用法和ThinkPHP幾乎一致。 ~~~php use think\Db; // 進行CURD操作 Db::table('user') ->data(['name'=>'thinkphp','email'=>'thinkphp@qq.com']) ->insert(); Db::table('user') ->where('id','>',10) ->order('id','desc') ->limit(10) ->select(); Db::table('user') ->where('id',10) ->update(['name'=>'test']); Db::table('user') ->where('id',10) ->delete(); ~~~ `Db`類支持所有的`ThinkPHP`數據庫鏈式操作,具體的可以參考5.1手冊的[數據庫部分](http://www.hmoore.net/manual/thinkphp5_1/353999)。 `think-orm`的Db類增加的(靜態)方法包括: - `setConfig` 設置全局配置信息 - `getConfig` 獲取數據庫配置信息 - `setQuery` 設置數據庫Query類名稱 - `setCacheHandler` 設置緩存對象Handler(必須支持`get`、`set`及`rm`方法) - `getSqlLog` 用于獲取當前請求的SQL日志信息(包含連接信息) ## 模型 定義模型很簡單,你只需要繼承`think\Model`即可。 ~~~php <?php namespace app\model; use think\Model; class User extends Model { } ~~~ 模型可以單獨定義數據庫連接和對應的表名。 ~~~php <?php namespace app\model; use think\Model; class User extends Model { // 設置當前模型對應的完整數據表名稱 protected $table = 'think_user'; // 設置當前模型的數據庫連接 protected $connection = 'db_config'; // 如果主鍵不是id則需要單獨定義 protected $pk = 'uid'; } ~~~ 模型操作: ~~~php use app\model\User; $user = User::get(1); $user->name = 'thinkphp'; $user->save(); ~~~ 你可以和`ThinkPHP`一樣使用包括獲取器、修改器和搜索器在內的模型功能,具體參考5.1手冊的[模型章節](http://www.hmoore.net/manual/thinkphp5_1/354040)。 ## Db類和模型用法對比 #### 創建Create Db用法 ```php Db::table('user') ->insert([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ]); ``` 模型用法 ```php $user = new User; $user->name = 'thinkphp'; $user->email = 'thinkphp@qq.com'; $user->save(); ``` 批量設置 ```php $user = new User; $user->save([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ]); ``` #### 讀取Read Db用法 ```php $user = Db::table('user') ->where('id', 1) ->find(); // 或者 $user = Db::table('user') ->find(1); echo $user['id']; echo $user['name']; ``` 模型用法 ```php $user = User::get(1); echo $user->id; echo $user->name; ``` 模型實現讀取多個記錄 ```php // 查詢用戶數據集 $users = User::where('id', '>', 1) ->limit(5) ->select(); // 遍歷讀取用戶數據 foreach ($users as $user) { echo $user->id; echo $user->name; } ``` #### 更新Update Db用法 ```php Db::table('user') ->where('id', 1) ->update([ 'name' => 'topthink', 'email' => 'topthink@qq.com', ]); ``` 模型用法 ```php $user = User::get(1); $user->name = 'topthink'; $user->email = 'topthink@qq.com'; $user->save(); ``` 或者使用 ```php $user = User::get(1); $user->save([ 'name' => 'topthink', 'email' => 'topthink@qq.com', ]); ``` 靜態調用 ```php User::update([ 'name' => 'topthink', 'email' => 'topthink@qq.com', ], ['id' => 1]); ``` #### 刪除Delete Db用法 ```php Db::table('user')->delete(1); ``` 模型用法 ```php $user = User::get(1); $user->delete(); ``` 或者靜態實現 ```php User::destroy(1); ``` `destroy`方法支持刪除指定主鍵或者查詢條件的數據 ```php // 根據主鍵刪除多個數據 User::destroy([1, 2, 3]); // 指定條件刪除數據 User::destroy([ 'status' => 0, ]); // 使用閉包條件 User::destroy(function ($query) { $query->where('id', '>', 0) ->where('status', 0); }); ``` 更多模型用法可以參考5.1完全開發手冊的[模型](http://www.hmoore.net/manual/thinkphp5_1/354041)章節 ## 查詢緩存 由于`think-orm`包沒有內置緩存類,所以如果你需要使用查詢緩存功能,必須設置緩存對象。 ``` // 你可以實例化自己的緩存類 假設為Cache $cache = new Cache(); // 設置查詢緩存對象 Db::setCacheHandler($cache); ``` 現在你就可以使用數據庫的查詢緩存功能了。 ## 功能擴展 如果你覺得內置的查詢類功能不能滿足需求,可以自己擴展一個`think\db\Query`類的子類(例如 `app\db\Query`),然后使用 ``` // 設置查詢對象類 Db::setQuery('app\db\Query'); ``` ## 獲取SQL日志 你可以通過下面的方法獲取當前請求的SQL日志 ``` $sqlHistory = Db::getSqlLog(); ```
                  <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>

                              哎呀哎呀视频在线观看