Overview Laravel v8.64 introduces a suite of features designed to reduce boilerplate and optimize high-performance cloud environments. These updates target three core areas: query readability with Eloquent, testing efficiency, and serverless optimization via Laravel Vapor. By automating database lifecycle management in tests and simplifying parent-child data sharing in Blade, the framework continues its mission to maximize developer happiness through expressive syntax. Prerequisites To follow this guide, you should have a solid grasp of the PHP language and the Laravel framework. Familiarity with AWS Lambda or serverless concepts will help when implementing the Vapor performance updates. Key Libraries & Tools * **Laravel 8.64**: The core framework providing new Eloquent and Collection methods. * **Laravel Octane**: A high-performance application booster for serving requests using Swoole or RoadRunner. * **Laravel Vapor**: A serverless deployment platform for Laravel, powered by AWS. * **Pest/PHPUnit**: Testing frameworks where the new database refreshing traits apply. Eloquent's Expressive Filtering The new `whereBelongsTo` method eliminates the need to manually specify foreign key names when filtering by a parent model. Instead of passing an ID and a column string, you pass the model instance directly. ```python // The old way $posts = Post::where('category_id', $category->id)->get(); // The eloquent way $posts = Post::whereBelongsTo($category)->get(); ``` This pattern shines in multi-tenant or complex systems where key names might vary (e.g., `uuid` vs `id`). It abstracts the underlying schema, making your code more resilient to database changes. Advanced Collection Logic with reduceMany While `reduce` handles single-value outputs, the new `reduceMany` method allows you to track multiple state variables simultaneously. This is ideal for complex calculations where you need to return an array of results from a single pass over a collection. ```python [$total, $count] = $collection->reduceMany(function ($carry, $item) { $carry[0] += $item->price; $carry[1]++; return $carry; }, [0, 0]); ``` Optimizing Serverless with Octane Laravel Vapor now supports Laravel Octane, representing a massive shift in how serverless functions behave. By enabling `octane: true` in your `vapor.yml`, the environment stays warm between requests. You can also persist database connections using `octane_database_session_processed`, preventing the overhead of re-authenticating with your database on every single Lambda execution. Syntax Notes * **@aware**: This new Blade directive allows child components to "look up" and access props from a parent without manual prop drilling. * **LazilyRefreshDatabase**: Unlike the standard `RefreshDatabase` trait, this only triggers a migration/transaction if the specific test actually hits the database, saving significant time in large test suites. Practical Examples Use `whereBelongsTo` when building API endpoints that filter resources by a logged-in user or a specific project. Implement `reduceMany` when generating dashboard reports that require multiple aggregates (sum, average, max) from a single dataset to minimize memory usage. Tips & Gotchas When using persistent database connections in Vapor, always set an `octane_database_session_ttl`. Without a Time-to-Live value, idle Lambda containers might hold onto connections indefinitely, eventually hitting the `max_connections` limit of your database server and causing downtime.
AWS Lambda
Cloud Providers
Oct 2021 • 1 videos
High activity month for AWS Lambda. Laravel among the most active voices, with 1 videos across 1 sources.
Oct 2021
- Oct 13, 2021