<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### [](https://octobercms.com/docs/database/relations#eager-loading)渴望加載 當訪問關系作為屬性時,關系數據是“延遲加載”的。這意味著直到您首次訪問該屬性,關系數據才被實際加載。但是,在查詢父模型時,模型可以“渴望加載”關系。較早的加載減輕了N + 1查詢問題。為了說明N + 1查詢問題,請考慮`Book`與以下相關的模型`Author`: ~~~ class Book extends Model { public $belongsTo = [ 'author' => ['Acme\Blog\Models\Author'] ]; } ~~~ 現在,讓我們檢索所有書籍及其作者: ~~~ $books = Book::all(); foreach ($books as $book) { echo $book->author->name; } ~~~ 此循環將執行1個查詢以檢索表上的所有書籍,然后對每個書籍執行另一個查詢以檢索作者。因此,如果我們有25本書,則此循環將運行26個查詢:1個查詢原始圖書,另外25個查詢檢索每本書的作者。 值得慶幸的是,我們可以使用緊急加載將此操作減少為僅2個查詢。查詢時,您可以使用以下`with`方法指定應該急切加載的關系: ~~~ $books = Book::with('author')->get(); foreach ($books as $book) { echo $book->author->name; } ~~~ 對于此操作,將僅執行兩個查詢: ~~~ select * from books select * from authors where id in (1, 2, 3, 4, 5, ...) ~~~ #### 渴望加載多個關系 有時,您可能需要在單個操作中急于加載幾個不同的關系。為此,只需將其他參數傳遞給該`with`方法: ~~~ $books = Book::with('author', 'publisher')->get(); ~~~ #### 嵌套的渴望加載 要渴望加載嵌套關系,可以使用“點”語法。例如,讓我們熱切地在一個聲明中加載本書的所有作者和所有作者的個人聯系人: ~~~ $books = Book::with('author.contacts')->get(); ~~~ ### [](https://octobercms.com/docs/database/relations#constraining-eager-loads)限制渴望的負荷 有時您可能希望渴望加載一個關系,但同時為渴望加載查詢指定其他查詢約束。這是一個例子: ~~~ $users = User::with([ 'posts' => function ($query) { $query->where('title', 'like', '%first%'); } ])->get(); ~~~ 在此示例中,只有帖子的`title`列中包含單詞,模型才會渴望加載帖子`first`。當然,您可以調用其他[查詢構建器](https://octobercms.com/docs/database/query)方法來進一步自定義急切的加載操作: ~~~ $users = User::with([ 'posts' => function ($query) { $query->orderBy('created_at', 'desc'); } ])->get(); ~~~ ### [](https://octobercms.com/docs/database/relations#lazy-eager-loading)懶惰的渴望加載 有時您可能需要在已檢索父模型之后急于加載關系。例如,如果您需要動態決定是否加載相關模型,這可能會很有用: ~~~ $books = Book::all(); if ($someCondition) { $books->load('author', 'publisher'); } ~~~ 如果您需要在預加載查詢中設置其他查詢約束,則可以將傳遞`Closure`給`load`方法: ~~~ $books->load([ 'author' => function ($query) { $query->orderBy('published_date', 'asc'); } ]); ~~~
                  <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>

                              哎呀哎呀视频在线观看