<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 查詢連貫操作 ### 介紹 數據庫查詢構建器為創建和運行數據庫查詢提供了方便,流暢的界面。它可用于在應用程序中執行大多數數據庫操作,并且可在所有受支持的數據庫系統上工作。 > **注意:**查詢構建器使用PDO參數綁定來保護您的應用程序免受SQL注入攻擊。無需清除作為綁定傳遞的字符串。 ### [](https://octobercms.com/docs/database/query#joins)添加 #### 內部加入聲明 查詢構建器還可以用于編寫連接語句。要執行基本的SQL“內部聯接”,可以`join`在查詢構建器實例上使用該方法。傳遞給該`join`方法的第一個參數是您需要連接到的表的名稱,其余參數指定連接的列約束。當然,如您所見,您可以在單個查詢中聯接多個表: ~~~ $users = Db::table('users') ->join('contacts', 'users.id', '=', 'contacts.user_id') ->join('orders', 'users.id', '=', 'orders.user_id') ->select('users.*', 'contacts.phone', 'orders.price') ->get(); ~~~ #### 左聯接/右聯接語句 如果要執行“左連接”或“右連接”而不是“內部連接”,請使用`leftJoin`或`rightJoin`方法。該`leftJoin`和`rightJoin`方法具有相同簽名的`join`方法: ~~~ $users = Db::table('users') ->leftJoin('posts', 'users.id', '=', 'posts.user_id') ->get(); $users = Db::table('users') ->rightJoin('posts', 'users.id', '=', 'posts.user_id') ->get(); ~~~ #### 交叉加入聲明 要執行“交叉連接”,請使用`crossJoin`要交叉連接到的表的名稱的方法。交叉聯接在第一個表和聯接的表之間生成笛卡爾乘積: ~~~ $users = Db::table('sizes') ->crossJoin('colors') ->get(); ~~~ #### 高級聯接語句 您也可以指定更高級的連接子句。首先,將a`Closure`作為第二個參數傳遞給`join`方法。該`Closure`會收到一個`JoinClause`對象,它允許你指定的約束`join`條款: ~~~ Db::table('users') ->join('contacts', function ($join) { $join->on('users.id', '=', 'contacts.user_id')->orOn(...); }) ->get(); ~~~ 如果要在聯接上使用“ where”樣式子句,則可以在聯接上使用`where`和`orWhere`方法。這些方法將比較列和一個值,而不是比較兩個列: ~~~ Db::table('users') ->join('contacts', function ($join) { $join->on('users.id', '=', 'contacts.user_id') ->where('contacts.user_id', '>', 5); }) ->get(); ~~~ #### 子查詢聯接 您可以使用`joinSub`,`leftJoinSub`和`rightJoinSub`方法加入查詢的子查詢。這些方法中的每一個都接收三個參數:子查詢,其表別名和定義相關列的Closure: ~~~ $latestPosts = Db::table('posts') ->select('user_id', Db::raw('MAX(created_at) as last_post_created_at')) ->where('is_published', true) ->groupBy('user_id'); $users = Db::table('users') ->joinSub($latestPosts, 'latest_posts', function ($join) { $join->on('users.id', '=', 'latest_posts.user_id'); })->get(); ~~~ ### [](https://octobercms.com/docs/database/query#unions)工會 查詢構建器還提供了一種將兩個查詢“聯合”在一起的快速方法。例如,您可以創建一個初始查詢,然后使用該`union`方法將其與第二個查詢合并: ~~~ $first = Db::table('users') ->whereNull('first_name'); $users = Db::table('users') ->whereNull('last_name') ->union($first) ->get(); ~~~ 該`unionAll`方法也可用,并且具有與相同的方法簽名`union`。 ### [](https://octobercms.com/docs/database/query#deletes)刪除內容 查詢構建器還可用于通過以下`delete`方法從表中刪除記錄: ~~~ Db::table('users')->delete(); ~~~ 您可以`delete`通過`where`在調用`delete`方法之前添加子句來約束語句: ~~~ Db::table('users')->where('votes', '<', 100)->delete(); ~~~ 如果您希望截斷整個表,這將刪除所有行并將自動遞增ID重置為零,則可以使用以下`truncate`方法: ~~~ Db::table('users')->truncate(); ~~~ ### [](https://octobercms.com/docs/database/query#pessimistic-locking)悲觀鎖定 查詢構建器還包括一些函數來幫助您對`select`語句執行“悲觀鎖定”。要使用“共享鎖”運行語句,可以`sharedLock`在查詢中使用該方法。共享鎖可防止在事務提交之前修改選定的行: ~~~ Db::table('users')->where('votes', '>', 100)->sharedLock()->get(); ~~~ 或者,您可以使用該`lockForUpdate`方法。“用于更新”鎖可防止修改行或使用另一個共享鎖選擇行: ~~~ Db::table('users')->where('votes', '>', 100)->lockForUpdate()->get(); ~~~ ### [](https://octobercms.com/docs/database/query#caching-queries)緩存查詢 ### [](https://octobercms.com/docs/database/query#persistent-caching)持久緩存 您可以使用“[緩存”服務](https://octobercms.com/docs/services/cache)輕松地緩存查詢結果。在準備查詢時,只需鏈接`remember`or`rememberForever`方法。 ~~~ $users = Db::table('users')->remember(10)->get(); ~~~ 在此示例中,查詢結果將被緩存十分鐘。緩存結果時,將不會對數據庫運行查詢,并且將從為應用程序指定的默認緩存驅動程序中加載結果。 ### [](https://octobercms.com/docs/database/query#in-memory-caching)內存中緩存 通過使用內存中緩存,可以防止在同一請求中出現重復查詢。默認情況下,此功能對[由模型準備的查詢](https://octobercms.com/docs/database/model#retrieving-models)啟用,但不對使用`Db`外觀直接生成的[查詢](https://octobercms.com/docs/database/model#retrieving-models)啟用。 ~~~ Db::table('users')->get(); // Result from database Db::table('users')->get(); // Result from database Model::all(); // Result from database Model::all(); // Result from in-memory cache ~~~ 您可以使用`enableDuplicateCache`或`disableDuplicateCache`方法啟用或禁用重復緩存。 ~~~ Db::table('users')->enableDuplicateCache()->get(); ~~~ 如果查詢存儲在緩存中,則在使用插入,更新,刪除或截斷語句時將自動清除查詢。但是,您可以使用該`flushDuplicateCache`方法手動清除緩存。 ~~~ Db::flushDuplicateCache(); ~~~ > **注意**:通過命令行界面(CLI)運行時,將完全禁用內存中緩存。 ### [](https://octobercms.com/docs/database/query#debugging)調試 您可以在構建查詢時使用`dd`或`dump`方法來轉儲查詢綁定和SQL。該`dd`方法將顯示調試信息,然后停止執行請求。該`dump`方法將顯示調試信息,但允許請求繼續執行: ~~~ Db::table('users')->where('votes', '>', 100)->dd(); Db::table('users')->where('votes', '>', 100)->dump(); ~~~
                  <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>

                              哎呀哎呀视频在线观看