From 6fe09d62017b7e5cc8e6a8a9fddd729a2ed5f24d Mon Sep 17 00:00:00 2001 From: overtrue Date: Mon, 12 Jun 2023 09:08:54 +0800 Subject: [PATCH] Add tests for #37 --- README.md | 7 +++++++ tests/FeatureTest.php | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/README.md b/README.md index 5ad7bdd..61b4e8a 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,13 @@ foreach($users as $user) { $user->hasFavorited($post); } +// with favoriteable object +$users = User::with('favorites.favoriteable')->get(); + +foreach($users as $user) { + $user->hasFavorited($post); +} + // Favoriteable $posts = Post::with('favorites')->get(); // or diff --git a/tests/FeatureTest.php b/tests/FeatureTest.php index e1deaf7..286a206 100644 --- a/tests/FeatureTest.php +++ b/tests/FeatureTest.php @@ -135,6 +135,28 @@ public function test_eager_loading() $this->assertEmpty($sqls->all()); } + public function test_eager_loading_from_favorite_model() + { + $user = User::create(['name' => 'overtrue']); + + $post1 = Post::create(['title' => 'Hello world!']); + $post2 = Post::create(['title' => 'Hello everyone!']); + $book1 = Book::create(['title' => 'Learn laravel.']); + $book2 = Book::create(['title' => 'Learn symfony.']); + + $user->favorite($post1); + $user->favorite($post2); + $user->favorite($book1); + $user->favorite($book2); + + // start recording + $sqls = $this->getQueryLog(function () use ($user) { + Favorite::with('favoriteable')->where('user_id', $user->id)->get(); + }); + + $this->assertSame(3, $sqls->count()); // from "favorites", "posts", "books" + } + public function test_eager_loading_error() { // hasFavorited