[WITH] Sự khác biệt with() method & load() method (ok)

https://stackoverflow.com/questions/26005994/laravel-with-method-versus-load-method

Cả hai đều đạt được cùng một kết quả cuối cùng — háo hức tải một mô hình có liên quan lên mô hình đầu tiên.

Sự khác biệt chính là with() háo hức tải mô hình liên quan lên phía trước, ngay sau truy vấn ban đầu (ví dụ: all (), first () hoặc find (x));

khi sử dụng load (), trước tiên bạn chạy truy vấn ban đầu, sau đó tải quan hệ một cách háo hức vào một thời điểm nào đó sau đó.

Eager loading using with()

$users = User::with('comments')->get();
Nếu chúng tôi có 5 người dùng, hai truy vấn sau sẽ chạy ngay lập tức:
select * from `users`
select * from `comments` where `comments`.`user_id` in (1, 2, 3, 4, 5)

"Lazy" eager loading using load()

Chúng ta có thể tách hai truy vấn, trước tiên bằng cách lấy kết quả ban đầu:

$users = User::all();
select * from `users`
$users = $users->load('comments');
select * from `comments` where `comments`.`user_id` in (1, 2, 3, 4, 5)

Ví dụ 1:

C:\xampp\htdocs\wpclidemo\app\Http\Controllers\HomeController.php

<?php
namespace App\Http\Controllers;
use App\Models\User;
Use DB;
class HomeController extends Controller {
  /**
   * Create a new controller instance.
   *
   * @return void
   */
  public function __construct() {
    // $this->middleware('auth');
  }
  /**
   * Show the application dashboard.
   *
   * @return \Illuminate\Contracts\Support\Renderable
   */
  public function index() {
    return view('home');
  }
  public function test() {
    $tests = User::with('comments')->get(); 
    return view('tests')->with(compact('tests'));
  }
}

C:\xampp\htdocs\wpclidemo\app\Models\User.php

C:\xampp\htdocs\wpclidemo\app\Models\Comment.php

C:\xampp\htdocs\wpclidemo\app\Models\User.php

C:\xampp\htdocs\wpclidemo\resources\views\tests.blade.php

C:\xampp\htdocs\wpclidemo\routes\web.php

C:\Users\Administrator\Downloads\comments.sql

C:\Users\Administrator\Downloads\users.sql

C:\Users\Administrator\Downloads\pings.sql

Ví dụ 2.1:

C:\xampp\htdocs\wpclidemo\app\Http\Controllers\HomeController.php

C:\xampp\htdocs\wpclidemo\resources\views\tests.blade.php

C:\xampp\htdocs\wpclidemo\app\Models\User.php

C:\xampp\htdocs\wpclidemo\app\Models\Ping.php

Ví dụ 2.2:

C:\xampp\htdocs\wpclidemo\app\Http\Controllers\HomeController.php

Tạo ra truy vấn sau

C:\Users\Administrator\Downloads\pings (1).sql

Last updated

Was this helpful?