Overview Laravel 12.25 introduces significant refinements to the developer experience, focusing on testing isolation, model attribute manipulation, and AI-assisted debugging. These updates solve common friction points when handling external HTTP calls in tests and managing hidden model attributes on the fly. Prerequisites To follow this tutorial, you should have a solid grasp of PHP and the Laravel framework. Familiarity with PHPUnit or Pest for testing, as well as Eloquent ORM models, is essential. Key Libraries & Tools * **HTTP Client (Guzzle)**: The underlying engine for Laravel's fluent HTTP wrapper. * **Eloquent ORM**: Laravel's ActiveRecord implementation for database interaction. * **Ignition**: The default error page handler that now features markdown export. Code Walkthrough Granular Control Over Stray Requests Previously, `preventStrayRequests()` was an all-or-nothing toggle. Now, you can whitelist specific endpoints while still blocking unauthorized external calls. ```python Http::preventStrayRequests(); // Whitelist specific endpoints while blocking others Http::allowStrayRequests([ 'https://api.dummyjson.com/*', ]); ``` This ensures your tests remain fast and deterministic without failing on necessary external integrations. Fluid Attribute Merging Managing hidden fields traditionally required manual array merging. The new `mergeHidden` method provides a clean, fluent API. ```python // The old, clunky way $user->setHidden(array_merge($user->getHidden(), ['name'])); // The new, readable way $user->mergeHidden(['name']); ``` Similar methods like `mergeVisible` and `mergeAppends` have also been added to maintain consistency across the Eloquent API. Syntax Notes The `allowStrayRequests` method now accepts an array of strings or patterns. This leverages Laravel's internal string matching to provide flexible URL whitelisting. For Eloquent methods, the framework continues its trend of replacing manual array manipulation with descriptive, fluent method names. Practical Examples * **Integration Testing**: Use `allowStrayRequests` when testing a service that must hit a sandbox API but should never touch production endpoints. * **Dynamic API Responses**: Use `mergeHidden` in a controller to hide sensitive user data only for specific, low-privilege API routes without changing the base model definition. Tips & Gotchas Always remember that `setHidden` overrides the entire hidden array. If you want to add to existing hidden fields without wiping out defaults like `password`, always use the new `mergeHidden` method. For debugging, the new **Copy as Markdown** button on error pages is the most efficient way to provide context to LLMs like ChatGPT.
Eloquent ORM
Software
- Sep 1, 2025
- Feb 17, 2025
- Jan 28, 2025
- Nov 27, 2024
- Jul 31, 2024