Функція API Resources у Laravel whenLoaded() дозволяє умовно включати дані зв'язків у API-відповіді, оптимізуючи продуктивність шляхом запобігання зайвим запитам до бази даних
Ось приклад використання методу whenLoaded():
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'posts' => PostResource::collection($this->whenLoaded('posts'))
];
}
}
Якщо зв'язок "posts" не завантажено, ключ "posts" буде видалено з відповіді, залишаючи лише "id" та "name"
Ось приклад того, як це може працювати у реальному сценарії:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use App\Http\Resources\ArticleResource;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function index(Request $request)
{
$query = Article::query();
if ($request->boolean('with_author')) {
$query->with('author');
}
if ($request->boolean('with_comments')) {
$query->with(['comments' => fn($query) => $query->latest()]);
}
return ArticleResource::collection($query->paginate());
}
}
class ArticleResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'author' => new UserResource($this->whenLoaded('author')),
'comments' => CommentResource::collection(
$this->whenLoaded('comments')
),
'latest_comment' => $this->whenLoaded('comments', function() {
return new CommentResource($this->comments->first());
})
];
}
}
Ця реалізація демонструє ефективне управління зв'язками завдяки:
Використання whenLoaded() сприяє створенню легких і ефективних API, які оптимізують запити до бази даних, зберігаючи при цьому гнучкість включення супутніх даних за необхідності
Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!