# Laravel Expert Knowledge Base (official docs, v10–v13)

Bob supports Laravel 10.x through 13.x. Always detect the target version from composer.json, bootstrap/app.php, or code patterns before answering.


# Laravel 10


## ARTISAN (Laravel 10)
- **Artisan Console**: - Introduction     - Tinker (REPL) - Writing Commands     - Generating Commands     - Command Structure     - Closure Commands     - Isolatable Commands - Defining Input Expectations     - Arguments     - Options     - Input Arrays     - Input Descriptions     - Prompting for Missing Input - Command I/O     - Retrieving Input     - Prompting for In
- **Introduction**: Artisan is the command line interface included with Laravel. Artisan exists at the root of your application as the artisan script and provides a number of helpful commands that can assist you while you build your application. To view a list of all available Artisan commands, you may use the list command:  Every command also includes a "help" screen
- **Laravel Sail**: If you are using Laravel Sail as your local development environment, remember to use the sail command line to invoke Artisan commands. Sail will execute your Artisan commands within your application's Docker containers:  <a name="tinker"></a>

## AUTHENTICATION (Laravel 10)
- **Authentication**: - Introduction     - Starter Kits     - Database Considerations     - Ecosystem Overview - Authentication Quickstart     - Install a Starter Kit     - Retrieving the Authenticated User     - Protecting Routes     - Login Throttling - Manually Authenticating Users     - Remembering Users     - Other Authentication Methods - HTTP Basic Authentication
- **Introduction**: Many web applications provide a way for their users to authenticate with the application and "login". Implementing this feature in web applications can be a complex and potentially risky endeavor. For this reason, Laravel strives to give you the tools you need to implement authentication quickly, securely, and easily.  At its core, Laravel's authen
- **Starter Kits**: Want to get started fast? Install a Laravel application starter kit in a fresh Laravel application. After migrating your database, navigate your browser to /register or any other URL that is assigned to your application. The starter kits will take care of scaffolding your entire authentication system!  **Even if you choose not to use a starter kit 

## AUTHORIZATION (Laravel 10)
- **Authorization**: - Introduction - Gates     - Writing Gates     - Authorizing Actions     - Gate Responses     - Intercepting Gate Checks     - Inline Authorization - Creating Policies     - Generating Policies     - Registering Policies - Writing Policies     - Policy Methods     - Policy Responses     - Methods Without Models     - Guest Users     - Policy Filter
- **Introduction**: In addition to providing built-in authentication services, Laravel also provides a simple way to authorize user actions against a given resource. For example, even though a user is authenticated, they may not be authorized to update or delete certain Eloquent models or database records managed by your application. Laravel's authorization features p
- **Writing Gates**: > [!WARNING]   > Gates are a great way to learn the basics of Laravel's authorization features; however, when building robust Laravel applications you should consider using policies to organize your authorization rules.  Gates are simply closures that determine if a user is authorized to perform a given action. Typically, gates are defined within t

## BILLING (Laravel 10)
- **Laravel Cashier (Stripe)**: - Introduction - Upgrading Cashier - Installation - Configuration     - Billable Model     - API Keys     - Currency Configuration     - Tax Configuration     - Logging     - Using Custom Models - Quickstart     - Selling Products     - Selling Subscriptions - Customers     - Retrieving Customers     - Creating Customers     - Updating Customers   
- **Introduction**: Laravel Cashier Stripe provides an expressive, fluent interface to Stripe's subscription billing services. It handles almost all of the boilerplate subscription billing code you are dreading writing. In addition to basic subscription management, Cashier can handle coupons, swapping subscription, subscription "quantities", cancellation grace periods
- **Upgrading Cashier**: When upgrading to a new version of Cashier, it's important that you carefully review the upgrade guide.  > [!WARNING]   > To prevent breaking changes, Cashier uses a fixed Stripe API version. Cashier 15 utilizes Stripe API version 2023-10-16. The Stripe API version will be updated on minor releases in order to make use of new Stripe features and im

## BLADE (Laravel 10)
- **Blade Templates**: - Introduction     - Supercharging Blade With Livewire - Displaying Data     - HTML Entity Encoding     - Blade and JavaScript Frameworks - Blade Directives     - If Statements     - Switch Statements     - Loops     - The Loop Variable     - Conditional Classes     - Additional Attributes     - Including Subviews     - The @once Directive     - Ra
- **Introduction**: Blade is the simple, yet powerful templating engine that is included with Laravel. Unlike some PHP templating engines, Blade does not restrict you from using plain PHP code in your templates. In fact, all Blade templates are compiled into plain PHP code and cached until they are modified, meaning Blade adds essentially zero overhead to your applica
- **Supercharging Blade With Livewire**: Want to take your Blade templates to the next level and build dynamic interfaces with ease? Check out Laravel Livewire. Livewire allows you to write Blade components that are augmented with dynamic functionality that would typically only be possible via frontend frameworks like React or Vue, providing a great approach to building modern, reactive f

## BROADCASTING (Laravel 10)
- **Broadcasting**: - Introduction - Server Side Installation     - Configuration     - Reverb     - Pusher Channels     - Ably     - Open Source Alternatives - Client Side Installation     - Reverb     - Pusher Channels     - Ably - Concept Overview     - Using an Example Application - Defining Broadcast Events     - Broadcast Name     - Broadcast Data     - Broadcas
- **Introduction**: In many modern web applications, WebSockets are used to implement realtime, live-updating user interfaces. When some data is updated on the server, a message is typically sent over a WebSocket connection to be handled by the client. WebSockets provide a more efficient alternative to continually polling your application's server for data changes tha
- **Supported Drivers**: By default, Laravel includes three server-side broadcasting drivers for you to choose from: Laravel Reverb, Pusher Channels, and Ably.  > [!NOTE]   > Before diving into event broadcasting, make sure you have read Laravel's documentation on events and listeners.  <a name="server-side-installation"></a>

## CACHE (Laravel 10)
- **Cache**: - Introduction - Configuration     - Driver Prerequisites - Cache Usage     - Obtaining a Cache Instance     - Retrieving Items From the Cache     - Storing Items in the Cache     - Removing Items From the Cache     - The Cache Helper - Atomic Locks     - Driver Prerequisites     - Managing Locks     - Managing Locks Across Processes - Adding Custo
- **Introduction**: Some of the data retrieval or processing tasks performed by your application could be CPU intensive or take several seconds to complete. When this is the case, it is common to cache the retrieved data for a time so it can be retrieved quickly on subsequent requests for the same data. The cached data is usually stored in a very fast data store such 
- **Configuration**: Your application's cache configuration file is located at config/cache.php. In this file, you may specify which cache driver you would like to be used by default throughout your application. Laravel supports popular caching backends like Memcached, Redis, DynamoDB, and relational databases out of the box. In addition, a file based cache driver is a

## CASHIER-PADDLE (Laravel 10)
- **Laravel Cashier (Paddle)**: - Introduction - Upgrading Cashier - Installation     - Paddle Sandbox - Configuration     - Billable Model     - API Keys     - Paddle JS     - Currency Configuration     - Overriding Default Models - Quickstart     - Selling Products     - Selling Subscriptions - Checkout Sessions     - Overlay Checkout     - Inline Checkout     - Guest Checkouts
- **Introduction**: > [!WARNING]   > This documentation is for Cashier Paddle 2.x's integration with Paddle Billing. If you're still using Paddle Classic, you should use Cashier Paddle 1.x.  Laravel Cashier Paddle provides an expressive, fluent interface to Paddle's subscription billing services. It handles almost all of the boilerplate subscription billing code you a
- **Upgrading Cashier**: When upgrading to a new version of Cashier, it's important that you carefully review the upgrade guide.  <a name="installation"></a>

## COLLECTIONS (Laravel 10)
- **Collections**: - Introduction     - Creating Collections     - Extending Collections - Available Methods - Higher Order Messages - Lazy Collections     - Introduction     - Creating Lazy Collections     - The Enumerable Contract     - Lazy Collection Methods  <a name="introduction"></a>
- **Introduction**: The Illuminate\Support\Collection class provides a fluent, convenient wrapper for working with arrays of data. For example, check out the following code. We'll use the collect helper to create a new collection instance from the array, run the strtoupper function on each element, and then remove all empty elements:      $collection = collect(['taylo
- **Creating Collections**: As mentioned above, the collect helper returns a new Illuminate\Support\Collection instance for the given array. So, creating a collection is as simple as:      $collection = collect([1, 2, 3]);  > [!NOTE]   > The results of Eloquent queries are always returned as Collection instances.  <a name="extending-collections"></a>

## CONFIGURATION (Laravel 10)
- **Configuration**: - Introduction - Environment Configuration     - Environment Variable Types     - Retrieving Environment Configuration     - Determining the Current Environment     - Encrypting Environment Files - Accessing Configuration Values - Configuration Caching - Debug Mode - Maintenance Mode  <a name="introduction"></a>
- **Introduction**: All of the configuration files for the Laravel framework are stored in the config directory. Each option is documented, so feel free to look through the files and get familiar with the options available to you.  These configuration files allow you to configure things like your database connection information, your mail server information, as well a
- **Application Overview**: In a hurry? You can get a quick overview of your application's configuration, drivers, and environment via the about Artisan command:  If you're only interested in a particular section of the application overview output, you may filter for that section using the --only option:  Or, to explore a specific configuration file's values in detail, you ma

## CONSOLE-TESTS (Laravel 10)
- **Console Tests**: - Introduction - Success / Failure Expectations - Input / Output Expectations - Console Events  <a name="introduction"></a>
- **Introduction**: In addition to simplifying HTTP testing, Laravel provides a simple API for testing your application's custom console commands.  <a name="success-failure-expectations"></a>
- **Success / Failure Expectations**: To get started, let's explore how to make assertions regarding an Artisan command's exit code. To accomplish this, we will use the artisan method to invoke an Artisan command from our test. Then, we will use the assertExitCode method to assert that the command completed with a given exit code:      /**      * Test a console command.      */     pub

## CONTAINER (Laravel 10)
- **Service Container**: - Introduction     - Zero Configuration Resolution     - When to Utilize the Container - Binding     - Binding Basics     - Binding Interfaces to Implementations     - Contextual Binding     - Binding Primitives     - Binding Typed Variadics     - Tagging     - Extending Bindings - Resolving     - The Make Method     - Automatic Injection - Method 
- **Introduction**: The Laravel service container is a powerful tool for managing class dependencies and performing dependency injection. Dependency injection is a fancy phrase that essentially means this: class dependencies are "injected" into the class via the constructor or, in some cases, "setter" methods.  Let's look at a simple example:      <?php      namespace
- **Zero Configuration Resolution**: If a class has no dependencies or only depends on other concrete classes (not interfaces), the container does not need to be instructed on how to resolve that class. For example, you may place the following code in your routes/web.php file:      <?php      class Service     {         // ...     }      Route::get('/', function (Service $service) {  

## CONTRACTS (Laravel 10)
- **Contracts**: - Introduction     - Contracts vs. Facades - When to Use Contracts - How to Use Contracts - Contract Reference  <a name="introduction"></a>
- **Introduction**: Laravel's "contracts" are a set of interfaces that define the core services provided by the framework. For example, an Illuminate\Contracts\Queue\Queue contract defines the methods needed for queueing jobs, while the Illuminate\Contracts\Mail\Mailer contract defines the methods needed for sending e-mail.  Each contract has a corresponding implement
- **Contracts vs. Facades**: Laravel's facades and helper functions provide a simple way of utilizing Laravel's services without needing to type-hint and resolve contracts out of the service container. In most cases, each facade has an equivalent contract.  Unlike facades, which do not require you to require them in your class' constructor, contracts allow you to define explic

## CONTROLLERS (Laravel 10)
- **Controllers**: - Introduction - Writing Controllers     - Basic Controllers     - Single Action Controllers - Controller Middleware - Resource Controllers     - Partial Resource Routes     - Nested Resources     - Naming Resource Routes     - Naming Resource Route Parameters     - Scoping Resource Routes     - Localizing Resource URIs     - Supplementing Resource
- **Introduction**: Instead of defining all of your request handling logic as closures in your route files, you may wish to organize this behavior using "controller" classes. Controllers can group related request handling logic into a single class. For example, a UserController class might handle all incoming requests related to users, including showing, creating, upd
- **Basic Controllers**: To quickly generate a new controller, you may run the make:controller Artisan command. By default, all of the controllers for your application are stored in the app/Http/Controllers directory:  Let's take a look at an example of a basic controller. A controller may have any number of public methods which will respond to incoming HTTP requests:     

## CSRF (Laravel 10)
- **CSRF Protection**: - Introduction - Preventing CSRF Requests     - Excluding URIs - X-CSRF-Token - X-XSRF-Token  <a name="csrf-introduction"></a>
- **Introduction**: Cross-site request forgeries are a type of malicious exploit whereby unauthorized commands are performed on behalf of an authenticated user. Thankfully, Laravel makes it easy to protect your application from cross-site request forgery (CSRF) attacks.  <a name="csrf-explanation"></a>
- **An Explanation of the Vulnerability**: In case you're not familiar with cross-site request forgeries, let's discuss an example of how this vulnerability can be exploited. Imagine your application has a /user/email route that accepts a POST request to change the authenticated user's email address. Most likely, this route expects an email input field to contain the email address the user 

## DATABASE-TESTING (Laravel 10)
- **Database Testing**: - Introduction     - Resetting the Database After Each Test - Model Factories - Running Seeders - Available Assertions  <a name="introduction"></a>
- **Introduction**: Laravel provides a variety of helpful tools and assertions to make it easier to test your database driven applications. In addition, Laravel model factories and seeders make it painless to create test database records using your application's Eloquent models and relationships. We'll discuss all of these powerful features in the following documentat
- **Resetting the Database After Each Test**: Before proceeding much further, let's discuss how to reset your database after each of your tests so that data from a previous test does not interfere with subsequent tests. Laravel's included Illuminate\Foundation\Testing\RefreshDatabase trait will take care of this for you. Simply use the trait on your test class:      <?php      namespace Tests\

## DATABASE (Laravel 10)
- **Database: Getting Started**: - Introduction     - Configuration     - Read and Write Connections - Running SQL Queries     - Using Multiple Database Connections     - Listening for Query Events     - Monitoring Cumulative Query Time - Database Transactions - Connecting to the Database CLI - Inspecting Your Databases - Monitoring Your Databases  <a name="introduction"></a>
- **Introduction**: Almost every modern web application interacts with a database. Laravel makes interacting with databases extremely simple across a variety of supported databases using raw SQL, a fluent query builder, and the Eloquent ORM. Currently, Laravel provides first-party support for five databases:  <div class="content-list" markdown="1">  - MariaDB 10.10+ (
- **Configuration**: The configuration for Laravel's database services is located in your application's config/database.php configuration file. In this file, you may define all of your database connections, as well as specify which connection should be used by default. Most of the configuration options within this file are driven by the values of your application's env

## DEPLOYMENT (Laravel 10)
- **Deployment**: - Introduction - Server Requirements - Server Configuration     - Nginx - Optimization     - Autoloader Optimization     - Caching Configuration     - Caching Events     - Caching Routes     - Caching Views - Debug Mode - Easy Deployment With Forge / Vapor  <a name="introduction"></a>
- **Introduction**: When you're ready to deploy your Laravel application to production, there are some important things you can do to make sure your application is running as efficiently as possible. In this document, we'll cover some great starting points for making sure your Laravel application is deployed properly.  <a name="server-requirements"></a>
- **Server Requirements**: The Laravel framework has a few system requirements. You should ensure that your web server has the following minimum PHP version and extensions:  <div class="content-list" markdown="1">  - PHP >= 8.1 - Ctype PHP Extension - cURL PHP Extension - DOM PHP Extension - Fileinfo PHP Extension - Filter PHP Extension - Hash PHP Extension - Mbstring PHP Ex

## DUSK (Laravel 10)
- **Laravel Dusk**: - Introduction - Installation     - Managing ChromeDriver Installations     - Using Other Browsers - Getting Started     - Generating Tests     - Resetting the Database After Each Test     - Running Tests     - Environment Handling - Browser Basics     - Creating Browsers     - Navigation     - Resizing Browser Windows     - Browser Macros     - Au
- **Introduction**: Laravel Dusk provides an expressive, easy-to-use browser automation and testing API. By default, Dusk does not require you to install JDK or Selenium on your local computer. Instead, Dusk uses a standalone ChromeDriver installation. However, you are free to utilize any other Selenium compatible driver you wish.  <a name="installation"></a>
- **Installation**: To get started, you should install Google Chrome and add the laravel/dusk Composer dependency to your project:  > [!WARNING]   > If you are manually registering Dusk's service provider, you should **never** register it in your production environment, as doing so could lead to arbitrary users being able to authenticate with your application.  After 

## ELOQUENT-COLLECTIONS (Laravel 10)
- **Eloquent: Collections**: - Introduction - Available Methods - Custom Collections  <a name="introduction"></a>
- **Introduction**: All Eloquent methods that return more than one model result will return instances of the Illuminate\Database\Eloquent\Collection class, including results retrieved via the get method or accessed via a relationship. The Eloquent collection object extends Laravel's base collection, so it naturally inherits dozens of methods used to fluently work with
- **Eloquent Collection Conversion**: While most Eloquent collection methods return a new instance of an Eloquent collection, the collapse, flatten, flip, keys, pluck, and zip methods return a base collection instance. Likewise, if a map operation returns a collection that does not contain any Eloquent models, it will be converted to a base collection instance.  <a name="available-meth

## ELOQUENT-FACTORIES (Laravel 10)
- **Eloquent: Factories**: - Introduction - Defining Model Factories     - Generating Factories     - Factory States     - Factory Callbacks - Creating Models Using Factories     - Instantiating Models     - Persisting Models     - Sequences - Factory Relationships     - Has Many Relationships     - Belongs To Relationships     - Many to Many Relationships     - Polymorphic 
- **Introduction**: When testing your application or seeding your database, you may need to insert a few records into your database. Instead of manually specifying the value of each column, Laravel allows you to define a set of default attributes for each of your Eloquent models using model factories.  To see an example of how to write a factory, take a look at the da
- **Generating Factories**: To create a factory, execute the make:factory Artisan command:  The new factory class will be placed in your database/factories directory.  <a name="factory-and-model-discovery-conventions"></a>

## ELOQUENT-MUTATORS (Laravel 10)
- **Eloquent: Mutators & Casting**: - Introduction - Accessors and Mutators     - Defining an Accessor     - Defining a Mutator - Attribute Casting     - Array and JSON Casting     - Date Casting     - Enum Casting     - Encrypted Casting     - Query Time Casting - Custom Casts     - Value Object Casting     - Array / JSON Serialization     - Inbound Casting     - Cast Parameters    
- **Introduction**: Accessors, mutators, and attribute casting allow you to transform Eloquent attribute values when you retrieve or set them on model instances. For example, you may want to use the Laravel encrypter to encrypt a value while it is stored in the database, and then automatically decrypt the attribute when you access it on an Eloquent model. Or, you may 
- **Defining an Accessor**: An accessor transforms an Eloquent attribute value when it is accessed. To define an accessor, create a protected method on your model to represent the accessible attribute. This method name should correspond to the "camel case" representation of the true underlying model attribute / database column when applicable.  In this example, we'll define a

## ELOQUENT-RELATIONSHIPS (Laravel 10)
- **Eloquent: Relationships**: - Introduction - Defining Relationships     - One to One     - One to Many     - One to Many (Inverse) / Belongs To     - Has One of Many     - Has One Through     - Has Many Through - Many to Many Relationships     - Retrieving Intermediate Table Columns     - Filtering Queries via Intermediate Table Columns     - Ordering Queries via Intermediate
- **Introduction**: Database tables are often related to one another. For example, a blog post may have many comments or an order could be related to the user who placed it. Eloquent makes managing and working with these relationships easy, and supports a variety of common relationships:  <div class="content-list" markdown="1">  - One To One - One To Many - Many To Ma
- **Defining Relationships**: Eloquent relationships are defined as methods on your Eloquent model classes. Since relationships also serve as powerful query builders, defining relationships as methods provides powerful method chaining and querying capabilities. For example, we may chain additional query constraints on this posts relationship:      $user->posts()->where('active'

## ELOQUENT-RESOURCES (Laravel 10)
- **Eloquent: API Resources**: - Introduction - Generating Resources - Concept Overview     - Resource Collections - Writing Resources     - Data Wrapping     - Pagination     - Conditional Attributes     - Conditional Relationships     - Adding Meta Data - Resource Responses  <a name="introduction"></a>
- **Introduction**: When building an API, you may need a transformation layer that sits between your Eloquent models and the JSON responses that are actually returned to your application's users. For example, you may wish to display certain attributes for a subset of users and not others, or you may wish to always include certain relationships in the JSON representati
- **Generating Resources**: To generate a resource class, you may use the make:resource Artisan command. By default, resources will be placed in the app/Http/Resources directory of your application. Resources extend the Illuminate\Http\Resources\Json\JsonResource class:  <a name="generating-resource-collections"></a>

## ELOQUENT-SERIALIZATION (Laravel 10)
- **Eloquent: Serialization**: - Introduction - Serializing Models and Collections     - Serializing to Arrays     - Serializing to JSON - Hiding Attributes From JSON - Appending Values to JSON - Date Serialization  <a name="introduction"></a>
- **Introduction**: When building APIs using Laravel, you will often need to convert your models and relationships to arrays or JSON. Eloquent includes convenient methods for making these conversions, as well as controlling which attributes are included in the serialized representation of your models.  > [!NOTE]   > For an even more robust way of handling Eloquent mod
- **Serializing to Arrays**: To convert a model and its loaded relationships to an array, you should use the toArray method. This method is recursive, so all attributes and all relations (including the relations of relations) will be converted to arrays:      use App\Models\User;      $user = User::with('roles')->first();      return $user->toArray();  The attributesToArray me

## ELOQUENT (Laravel 10)
- **Eloquent: Getting Started**: - Introduction - Generating Model Classes - Eloquent Model Conventions     - Table Names     - Primary Keys     - UUID and ULID Keys     - Timestamps     - Database Connections     - Default Attribute Values     - Configuring Eloquent Strictness - Retrieving Models     - Collections     - Chunking Results     - Chunk Using Lazy Collections     - Cu
- **Introduction**: Laravel includes Eloquent, an object-relational mapper (ORM) that makes it enjoyable to interact with your database. When using Eloquent, each database table has a corresponding "Model" that is used to interact with that table. In addition to retrieving records from the database table, Eloquent models allow you to insert, update, and delete records
- **Laravel Bootcamp**: If you're new to Laravel, feel free to jump into the Laravel Bootcamp. The Laravel Bootcamp will walk you through building your first Laravel application using Eloquent. It's a great way to get a tour of everything that Laravel and Eloquent have to offer.  <a name="generating-model-classes"></a>

## ENCRYPTION (Laravel 10)
- **Encryption**: - Introduction - Configuration - Using the Encrypter  <a name="introduction"></a>
- **Introduction**: Laravel's encryption services provide a simple, convenient interface for encrypting and decrypting text via OpenSSL using AES-256 and AES-128 encryption. All of Laravel's encrypted values are signed using a message authentication code (MAC) so that their underlying value can not be modified or tampered with once encrypted.  <a name="configuration">
- **Configuration**: Before using Laravel's encrypter, you must set the key configuration option in your config/app.php configuration file. This configuration value is driven by the APP_KEY environment variable. You should use the php artisan key:generate command to generate this variable's value since the key:generate command will use PHP's secure random bytes generat

## ENVOY (Laravel 10)
- **Laravel Envoy**: - Introduction - Installation - Writing Tasks     - Defining Tasks     - Multiple Servers     - Setup     - Variables     - Stories     - Hooks - Running Tasks     - Confirming Task Execution - Notifications     - Slack     - Discord     - Telegram     - Microsoft Teams  <a name="introduction"></a>
- **Introduction**: Laravel Envoy is a tool for executing common tasks you run on your remote servers. Using Blade style syntax, you can easily setup tasks for deployment, Artisan commands, and more. Currently, Envoy only supports the Mac and Linux operating systems. However, Windows support is achievable using WSL2.  <a name="installation"></a>
- **Installation**: First, install Envoy into your project using the Composer package manager:  Once Envoy has been installed, the Envoy binary will be available in your application's vendor/bin directory:  <a name="writing-tasks"></a>

## ERRORS (Laravel 10)
- **Error Handling**: - Introduction - Configuration - The Exception Handler     - Reporting Exceptions     - Exception Log Levels     - Ignoring Exceptions by Type     - Rendering Exceptions     - Reportable and Renderable Exceptions - Throttling Reported Exceptions - HTTP Exceptions     - Custom HTTP Error Pages  <a name="introduction"></a>
- **Introduction**: When you start a new Laravel project, error and exception handling is already configured for you. The App\Exceptions\Handler class is where all exceptions thrown by your application are logged and then rendered to the user. We'll dive deeper into this class throughout this documentation.  <a name="configuration"></a>
- **Configuration**: The debug option in your config/app.php configuration file determines how much information about an error is actually displayed to the user. By default, this option is set to respect the value of the APP_DEBUG environment variable, which is stored in your .env file.  During local development, you should set the APP_DEBUG environment variable to tru

## EVENTS (Laravel 10)
- **Events**: - Introduction - Registering Events and Listeners     - Generating Events and Listeners     - Manually Registering Events     - Event Discovery - Defining Events - Defining Listeners - Queued Event Listeners     - Manually Interacting With the Queue     - Queued Event Listeners and Database Transactions     - Handling Failed Jobs - Dispatching Even
- **Introduction**: Laravel's events provide a simple observer pattern implementation, allowing you to subscribe and listen for various events that occur within your application. Event classes are typically stored in the app/Events directory, while their listeners are stored in app/Listeners. Don't worry if you don't see these directories in your application as they w
- **Registering Events and Listeners**: The App\Providers\EventServiceProvider included with your Laravel application provides a convenient place to register all of your application's event listeners. The listen property contains an array of all events (keys) and their listeners (values). You may add as many events to this array as your application requires. For example, let's add an Ord

## FACADES (Laravel 10)
- **Facades**: - Introduction - When to Utilize Facades     - Facades vs. Dependency Injection     - Facades vs. Helper Functions - How Facades Work - Real-Time Facades - Facade Class Reference  <a name="introduction"></a>
- **Introduction**: Throughout the Laravel documentation, you will see examples of code that interacts with Laravel's features via "facades". Facades provide a "static" interface to classes that are available in the application's service container. Laravel ships with many facades which provide access to almost all of Laravel's features.  Laravel facades serve as "stat
- **Helper Functions**: To complement facades, Laravel offers a variety of global "helper functions" that make it even easier to interact with common Laravel features. Some of the common helper functions you may interact with are view, response, url, config, and more. Each helper function offered by Laravel is documented with their corresponding feature; however, a comple

## FILESYSTEM (Laravel 10)
- **File Storage**: - Introduction - Configuration     - The Local Driver     - The Public Disk     - Driver Prerequisites     - Scoped and Read-Only Filesystems     - Amazon S3 Compatible Filesystems - Obtaining Disk Instances     - On-Demand Disks - Retrieving Files     - Downloading Files     - File URLs     - Temporary URLs     - File Metadata - Storing Files     
- **Introduction**: Laravel provides a powerful filesystem abstraction thanks to the wonderful Flysystem PHP package by Frank de Jonge. The Laravel Flysystem integration provides simple drivers for working with local filesystems, SFTP, and Amazon S3. Even better, it's amazingly simple to switch between these storage options between your local development machine and p
- **Configuration**: Laravel's filesystem configuration file is located at config/filesystems.php. Within this file, you may configure all of your filesystem "disks". Each disk represents a particular storage driver and storage location. Example configurations for each supported driver are included in the configuration file so you can modify the configuration to reflec

## FOLIO (Laravel 10)
- **Laravel Folio**: - Introduction - Installation     - Page Paths / URIs     - Subdomain Routing - Creating Routes     - Nested Routes     - Index Routes - Route Parameters - Route Model Binding     - Soft Deleted Models - Render Hooks - Named Routes - Middleware - Route Caching  <a name="introduction"></a>
- **Introduction**: Laravel Folio is a powerful page based router designed to simplify routing in Laravel applications. With Laravel Folio, generating a route becomes as effortless as creating a Blade template within your application's resources/views/pages directory.  For example, to create a page that is accessible at the /greeting URL, just create a greeting.blade.
- **Installation**: To get started, install Folio into your project using the Composer package manager:  After installing Folio, you may execute the folio:install Artisan command, which will install Folio's service provider into your application. This service provider registers the directory where Folio will search for routes / pages:  <a name="page-paths-uris"></a>

## FORTIFY (Laravel 10)
- **Laravel Fortify**: - Introduction     - What is Fortify?     - When Should I Use Fortify? - Installation     - The Fortify Service Provider     - Fortify Features     - Disabling Views - Authentication     - Customizing User Authentication     - Customizing the Authentication Pipeline     - Customizing Redirects - Two Factor Authentication     - Enabling Two Factor A
- **Introduction**: Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel. Fortify registers the routes and controllers needed to implement all of Laravel's authentication features, including login, registration, password reset, email verification, and more. After installing Fortify, you may run the route:list Artisan command to see 
- **What is Fortify?**: As mentioned previously, Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel. Fortify registers the routes and controllers needed to implement all of Laravel's authentication features, including login, registration, password reset, email verification, and more.  **You are not required to use Fortify in order to 

## FRONTEND (Laravel 10)
- **Frontend**: - Introduction - Using PHP     - PHP and Blade     - Livewire     - Starter Kits - Using Vue / React     - Inertia     - Starter Kits - Bundling Assets  <a name="introduction"></a>
- **Introduction**: Laravel is a backend framework that provides all of the features you need to build modern web applications, such as routing, validation, caching, queues, file storage, and more. However, we believe it's important to offer developers a beautiful full-stack experience, including powerful approaches for building your application's frontend.  There are
- **PHP and Blade**: In the past, most PHP applications rendered HTML to the browser using simple HTML templates interspersed with PHP echo statements which render data that was retrieved from a database during the request:  In Laravel, this approach to rendering HTML can still be achieved using views and Blade. Blade is an extremely light-weight templating language th

## HASHING (Laravel 10)
- **Hashing**: - Introduction - Configuration - Basic Usage     - Hashing Passwords     - Verifying That a Password Matches a Hash     - Determining if a Password Needs to be Rehashed  <a name="introduction"></a>
- **Introduction**: The Laravel Hash facade provides secure Bcrypt and Argon2 hashing for storing user passwords. If you are using one of the Laravel application starter kits, Bcrypt will be used for registration and authentication by default.  Bcrypt is a great choice for hashing passwords because its "work factor" is adjustable, which means that the time it takes to
- **Configuration**: The default hashing driver for your application is configured in your application's config/hashing.php configuration file. There are currently several supported drivers: Bcrypt and Argon2 (Argon2i and Argon2id variants).  <a name="basic-usage"></a>

## HELPERS (Laravel 10)
- **Helpers**: - Introduction - Available Methods - Other Utilities     - Benchmarking     - Dates     - Lottery     - Pipeline     - Sleep  <a name="introduction"></a>
- **Introduction**: Laravel includes a variety of global "helper" PHP functions. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.  <a name="available-methods"></a>
- **Available Methods**: <style>     .collection-method-list > p {         columns: 10.8em 3; -moz-columns: 10.8em 3; -webkit-columns: 10.8em 3;     }      .collection-method-list a {         display: block;         overflow: hidden;         text-overflow: ellipsis;         white-space: nowrap;     } </style>  <a name="arrays-and-objects-method-list"></a>

## HOMESTEAD (Laravel 10)
- **Laravel Homestead**: - Introduction - Installation and Setup     - First Steps     - Configuring Homestead     - Configuring Nginx Sites     - Configuring Services     - Launching the Vagrant Box     - Per Project Installation     - Installing Optional Features     - Aliases - Updating Homestead - Daily Usage     - Connecting via SSH     - Adding Additional Sites     -
- **Introduction**: Laravel strives to make the entire PHP development experience delightful, including your local development environment. Laravel Homestead is an official, pre-packaged Vagrant box that provides you a wonderful development environment without requiring you to install PHP, a web server, or any other server software on your local machine.  Vagrant prov
- **Included Software**: <style>     #software-list > ul {         column-count: 2; -moz-column-count: 2; -webkit-column-count: 2;         column-gap: 5em; -moz-column-gap: 5em; -webkit-column-gap: 5em;         line-height: 1.9;     } </style>  <div id="software-list" markdown="1">  - Ubuntu 22.04 - Git - PHP 8.3 - PHP 8.2 - PHP 8.1 - PHP 8.0 - PHP 7.4 - PHP 7.3 - PHP 7.2 

## HORIZON (Laravel 10)
- **Laravel Horizon**: - Introduction - Installation     - Configuration     - Balancing Strategies     - Dashboard Authorization     - Silenced Jobs - Upgrading Horizon - Running Horizon     - Deploying Horizon - Tags - Notifications - Metrics - Deleting Failed Jobs - Clearing Jobs From Queues  <a name="introduction"></a>
- **Introduction**: > [!NOTE]   > Before digging into Laravel Horizon, you should familiarize yourself with Laravel's base queue services. Horizon augments Laravel's queue with additional features that may be confusing if you are not already familiar with the basic queue features offered by Laravel.  Laravel Horizon provides a beautiful dashboard and code-driven confi
- **Installation**: > [!WARNING]   > Laravel Horizon requires that you use Redis to power your queue. Therefore, you should ensure that your queue connection is set to redis in your application's config/queue.php configuration file.  You may install Horizon into your project using the Composer package manager:  After installing Horizon, publish its assets using the ho

## HTTP-CLIENT (Laravel 10)
- **HTTP Client**: - Introduction - Making Requests     - Request Data     - Headers     - Authentication     - Timeout     - Retries     - Error Handling     - Guzzle Middleware     - Guzzle Options - Concurrent Requests - Macros - Testing     - Faking Responses     - Inspecting Requests     - Preventing Stray Requests - Events  <a name="introduction"></a>
- **Introduction**: Laravel provides an expressive, minimal API around the Guzzle HTTP client, allowing you to quickly make outgoing HTTP requests to communicate with other web applications. Laravel's wrapper around Guzzle is focused on its most common use cases and a wonderful developer experience.  Before getting started, you should ensure that you have installed th
- **Making Requests**: To make requests, you may use the head, get, post, put, patch, and delete methods provided by the Http facade. First, let's examine how to make a basic GET request to another URL:      use Illuminate\Support\Facades\Http;      $response = Http::get('http://example.com');  The get method returns an instance of Illuminate\Http\Client\Response, which 

## HTTP-TESTS (Laravel 10)
- **HTTP Tests**: - Introduction - Making Requests     - Customizing Request Headers     - Cookies     - Session / Authentication     - Debugging Responses     - Exception Handling - Testing JSON APIs     - Fluent JSON Testing - Testing File Uploads - Testing Views     - Rendering Blade and Components - Available Assertions     - Response Assertions     - Authentica
- **Introduction**: Laravel provides a very fluent API for making HTTP requests to your application and examining the responses. For example, take a look at the feature test defined below:  The get method makes a GET request into the application, while the assertStatus method asserts that the returned response should have the given HTTP status code. In addition to thi
- **Making Requests**: To make a request to your application, you may invoke the get, post, put, patch, or delete methods within your test. These methods do not actually issue a "real" HTTP request to your application. Instead, the entire network request is simulated internally.  Instead of returning an Illuminate\Http\Response instance, test request methods return an in

## INSTALLATION (Laravel 10)
- **Installation**: - Meet Laravel     - Why Laravel? - Creating a Laravel Project - Initial Configuration     - Environment Based Configuration     - Databases and Migrations     - Directory Configuration - Docker Installation Using Sail     - Sail on macOS     - Sail on Windows     - Sail on Linux     - Choosing Your Sail Services - IDE Support - Laravel and AI     
- **Meet Laravel**: Laravel is a web application framework with expressive, elegant syntax. A web framework provides a structure and starting point for creating your application, allowing you to focus on creating something amazing while we sweat the details.  Laravel strives to provide an amazing developer experience while providing powerful features such as thorough 
- **Why Laravel?**: There are a variety of tools and frameworks available to you when building a web application. However, we believe Laravel is the best choice for building modern, full-stack web applications.

## LIFECYCLE (Laravel 10)
- **Request Lifecycle**: - Introduction - Lifecycle Overview     - First Steps     - HTTP / Console Kernels     - Service Providers     - Routing     - Finishing Up - Focus on Service Providers  <a name="introduction"></a>
- **Introduction**: When using any tool in the "real world", you feel more confident if you understand how that tool works. Application development is no different. When you understand how your development tools function, you feel more comfortable and confident using them.  The goal of this document is to give you a good, high-level overview of how the Laravel framewo
- **First Steps**: The entry point for all requests to a Laravel application is the public/index.php file. All requests are directed to this file by your web server (Apache / Nginx) configuration. The index.php file doesn't contain much code. Rather, it is a starting point for loading the rest of the framework.  The index.php file loads the Composer generated autoloa

## LOCALIZATION (Laravel 10)
- **Localization**: - Introduction     - Publishing the Language Files     - Configuring the Locale     - Pluralization Language - Defining Translation Strings     - Using Short Keys     - Using Translation Strings as Keys - Retrieving Translation Strings     - Replacing Parameters in Translation Strings     - Pluralization - Overriding Package Language Files  <a name
- **Introduction**: > [!NOTE]   > By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files, you may publish them via the lang:publish Artisan command.  Laravel's localization features provide a convenient way to retrieve strings in various languages, allowing you to easily support multipl
- **Publishing the Language Files**: By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files or create your own, you should scaffold the lang directory via the lang:publish Artisan command. The lang:publish command will create the lang directory in your application and publish the default set of language

## LOGGING (Laravel 10)
- **Logging**: - Introduction - Configuration     - Available Channel Drivers     - Channel Prerequisites     - Logging Deprecation Warnings - Building Log Stacks - Writing Log Messages     - Contextual Information     - Writing to Specific Channels - Monolog Channel Customization     - Customizing Monolog for Channels     - Creating Monolog Handler Channels     
- **Introduction**: To help you learn more about what's happening within your application, Laravel provides robust logging services that allow you to log messages to files, the system error log, and even to Slack to notify your entire team.  Laravel logging is based on "channels". Each channel represents a specific way of writing log information. For example, the sing
- **Configuration**: All of the configuration options for your application's logging behavior are housed in the config/logging.php configuration file. This file allows you to configure your application's log channels, so be sure to review each of the available channels and their options. We'll review a few common options below.  By default, Laravel will use the stack c

## MAIL (Laravel 10)
- **Mail**: - Introduction     - Configuration     - Driver Prerequisites     - Failover Configuration     - Round Robin Configuration - Generating Mailables - Writing Mailables     - Configuring the Sender     - Configuring the View     - View Data     - Attachments     - Inline Attachments     - Attachable Objects     - Headers     - Tags and Metadata     - 
- **Introduction**: Sending email doesn't have to be complicated. Laravel provides a clean, simple email API powered by the popular Symfony Mailer component. Laravel and Symfony Mailer provide drivers for sending email via SMTP, Mailgun, Postmark, Amazon SES, and sendmail, allowing you to quickly get started sending mail through a local or cloud based service of your 
- **Configuration**: Laravel's email services may be configured via your application's config/mail.php configuration file. Each mailer configured within this file may have its own unique configuration and even its own unique "transport", allowing your application to use different email services to send certain email messages. For example, your application might use Pos

## MCP (Laravel 10)
- **Laravel MCP**: - Introduction - Installation     - Publishing Routes - Creating Servers     - Server Registration     - Web Servers     - Local Servers - Tools     - Creating Tools     - Tool Input Schemas     - Validating Tool Arguments     - Tool Dependency Injection     - Tool Annotations     - Conditional Tool Registration     - Tool Responses - Prompts     -
- **Introduction**: Laravel MCP provides a simple and elegant way for AI clients to interact with your Laravel application through the Model Context Protocol. It offers an expressive, fluent interface for defining servers, tools, resources, and prompts that enable AI-powered interactions with your application.  <a name="installation"></a>
- **Installation**: To get started, install Laravel MCP into your project using the Composer package manager:  <a name="publishing-routes"></a>

## MIDDLEWARE (Laravel 10)
- **Middleware**: - Introduction - Defining Middleware - Registering Middleware     - Global Middleware     - Assigning Middleware to Routes     - Middleware Groups     - Sorting Middleware - Middleware Parameters - Terminable Middleware  <a name="introduction"></a>
- **Introduction**: Middleware provide a convenient mechanism for inspecting and filtering HTTP requests entering your application. For example, Laravel includes a middleware that verifies the user of your application is authenticated. If the user is not authenticated, the middleware will redirect the user to your application's login screen. However, if the user is au
- **Defining Middleware**: To create a new middleware, use the make:middleware Artisan command:  This command will place a new EnsureTokenIsValid class within your app/Http/Middleware directory. In this middleware, we will only allow access to the route if the supplied token input matches a specified value. Otherwise, we will redirect the users back to the home URI:      <?p

## MIGRATIONS (Laravel 10)
- **Database: Migrations**: - Introduction - Generating Migrations     - Squashing Migrations - Migration Structure - Running Migrations     - Rolling Back Migrations - Tables     - Creating Tables     - Updating Tables     - Renaming / Dropping Tables - Columns     - Creating Columns     - Available Column Types     - Column Modifiers     - Modifying Columns     - Renaming C
- **Introduction**: Migrations are like version control for your database, allowing your team to define and share the application's database schema definition. If you have ever had to tell a teammate to manually add a column to their local database schema after pulling in your changes from source control, you've faced the problem that database migrations solve.  The L
- **Generating Migrations**: You may use the make:migration Artisan command to generate a database migration. The new migration will be placed in your database/migrations directory. Each migration filename contains a timestamp that allows Laravel to determine the order of the migrations:  Laravel will use the name of the migration to attempt to guess the name of the table and 

## MIX (Laravel 10)
- **Introduction**: Laravel Mix, a package developed by Laracasts creator Jeffrey Way, provides a fluent API for defining webpack build steps for your Laravel application using several common CSS and JavaScript pre-processors.  In other words, Mix makes it a cinch to compile and minify your application's CSS and JavaScript files. Through simple method chaining, you ca

## MOCKING (Laravel 10)
- **Mocking**: - Introduction - Mocking Objects - Mocking Facades     - Facade Spies - Interacting With Time  <a name="introduction"></a>
- **Introduction**: When testing Laravel applications, you may wish to "mock" certain aspects of your application so they are not actually executed during a given test. For example, when testing a controller that dispatches an event, you may wish to mock the event listeners so they are not actually executed during the test. This allows you to only test the controller'
- **Mocking Objects**: When mocking an object that is going to be injected into your application via Laravel's service container, you will need to bind your mocked instance into the container as an instance binding. This will instruct the container to use your mocked instance of the object instead of constructing the object itself:      use App\Service;     use Mockery; 

## NOTIFICATIONS (Laravel 10)
- **Notifications**: - Introduction - Generating Notifications - Sending Notifications     - Using the Notifiable Trait     - Using the Notification Facade     - Specifying Delivery Channels     - Queueing Notifications     - On-Demand Notifications - Mail Notifications     - Formatting Mail Messages     - Customizing the Sender     - Customizing the Recipient     - Cu
- **Introduction**: In addition to support for sending email, Laravel provides support for sending notifications across a variety of delivery channels, including email, SMS (via Vonage, formerly known as Nexmo), and Slack. In addition, a variety of community built notification channels have been created to send notifications over dozens of different channels! Notifica
- **Generating Notifications**: In Laravel, each notification is represented by a single class that is typically stored in the app/Notifications directory. Don't worry if you don't see this directory in your application - it will be created for you when you run the make:notification Artisan command:  This command will place a fresh notification class in your app/Notifications dir

## OCTANE (Laravel 10)
- **Laravel Octane**: - Introduction - Installation - Server Prerequisites     - FrankenPHP     - RoadRunner     - Swoole - Serving Your Application     - Serving Your Application via HTTPS     - Serving Your Application via Nginx     - Watching for File Changes     - Specifying the Worker Count     - Specifying the Max Request Count     - Reloading the Workers     - St
- **Introduction**: Laravel Octane supercharges your application's performance by serving your application using high-powered application servers, including FrankenPHP, Open Swoole, Swoole, and RoadRunner. Octane boots your application once, keeps it in memory, and then feeds it requests at supersonic speeds.  <a name="installation"></a>
- **Installation**: Octane may be installed via the Composer package manager:  After installing Octane, you may execute the octane:install Artisan command, which will install Octane's configuration file into your application:  <a name="server-prerequisites"></a>

## PACKAGES (Laravel 10)
- **Package Development**: - Introduction     - A Note on Facades - Package Discovery - Service Providers - Resources     - Configuration     - Migrations     - Routes     - Language Files     - Views     - View Components     - "About" Artisan Command - Commands - Public Assets - Publishing File Groups  <a name="introduction"></a>
- **Introduction**: Packages are the primary way of adding functionality to Laravel. Packages might be anything from a great way to work with dates like Carbon or a package that allows you to associate files with Eloquent models like Spatie's Laravel Media Library.  There are different types of packages. Some packages are stand-alone, meaning they work with any PHP fr
- **A Note on Facades**: When writing a Laravel application, it generally does not matter if you use contracts or facades since both provide essentially equal levels of testability. However, when writing packages, your package will not typically have access to all of Laravel's testing helpers. If you would like to be able to write your package tests as if the package were 

## PAGINATION (Laravel 10)
- **Database: Pagination**: - Introduction - Basic Usage     - Paginating Query Builder Results     - Paginating Eloquent Results     - Cursor Pagination     - Manually Creating a Paginator     - Customizing Pagination URLs - Displaying Pagination Results     - Adjusting the Pagination Link Window     - Converting Results to JSON - Customizing the Pagination View     - Using 
- **Introduction**: In other frameworks, pagination can be very painful. We hope Laravel's approach to pagination will be a breath of fresh air. Laravel's paginator is integrated with the query builder and Eloquent ORM and provides convenient, easy-to-use pagination of database records with zero configuration.  By default, the HTML generated by the paginator is compat
- **Tailwind JIT**: If you are using Laravel's default Tailwind pagination views and the Tailwind JIT engine, you should ensure your application's tailwind.config.js file's content key references Laravel's pagination views so that their Tailwind classes are not purged:  <a name="basic-usage"></a>

## PASSPORT (Laravel 10)
- **Laravel Passport**: - Introduction     - Passport or Sanctum? - Installation     - Deploying Passport     - Migration Customization     - Upgrading Passport - Configuration     - Client Secret Hashing     - Token Lifetimes     - Overriding Default Models     - Overriding Routes - Issuing Access Tokens     - Managing Clients     - Requesting Tokens     - Refreshing Tok
- **Introduction**: Laravel Passport provides a full OAuth2 server implementation for your Laravel application in a matter of minutes. Passport is built on top of the League OAuth2 server that is maintained by Andy Millington and Simon Hamp.  > [!WARNING]   > This documentation assumes you are already familiar with OAuth2. If you do not know anything about OAuth2, con
- **Passport or Sanctum?**: Before getting started, you may wish to determine if your application would be better served by Laravel Passport or Laravel Sanctum. If your application absolutely needs to support OAuth2, then you should use Laravel Passport.  However, if you are attempting to authenticate a single-page application, mobile application, or issue API tokens, you sho

## PASSWORDS (Laravel 10)
- **Resetting Passwords**: - Introduction     - Model Preparation     - Database Preparation     - Configuring Trusted Hosts - Routing     - Requesting the Password Reset Link     - Resetting the Password - Deleting Expired Tokens - Customization  <a name="introduction"></a>
- **Introduction**: Most web applications provide a way for users to reset their forgotten passwords. Rather than forcing you to re-implement this by hand for every application you create, Laravel provides convenient services for sending password reset links and secure resetting passwords.  > [!NOTE]   > Want to get started fast? Install a Laravel application starter 
- **Model Preparation**: Before using the password reset features of Laravel, your application's App\Models\User model must use the Illuminate\Notifications\Notifiable trait. Typically, this trait is already included on the default App\Models\User model that is created with new Laravel applications.  Next, verify that your App\Models\User model implements the Illuminate\Co

## PENNANT (Laravel 10)
- **Laravel Pennant**: - Introduction - Installation - Configuration - Defining Features     - Class Based Features - Checking Features     - Conditional Execution     - The HasFeatures Trait     - Blade Directive     - Middleware     - In-Memory Cache - Scope     - Specifying the Scope     - Default Scope     - Nullable Scope     - Identifying Scope     - Serializing Sc
- **Introduction**: Laravel Pennant is a simple and light-weight feature flag package - without the cruft. Feature flags enable you to incrementally roll out new application features with confidence, A/B test new interface designs, complement a trunk-based development strategy, and much more.  <a name="installation"></a>
- **Installation**: First, install Pennant into your project using the Composer package manager:  Next, you should publish the Pennant configuration and migration files using the vendor:publish Artisan command:  Finally, you should run your application's database migrations. This will create a features table that Pennant uses to power its database driver:  <a name="co

## PINT (Laravel 10)
- **Laravel Pint**: - Introduction - Installation - Running Pint - Configuring Pint     - Presets     - Rules     - Excluding Files / Folders  <a name="introduction"></a>
- **Introduction**: Laravel Pint is an opinionated PHP code style fixer for minimalists. Pint is built on top of PHP-CS-Fixer and makes it simple to ensure that your code style stays clean and consistent.  Pint is automatically installed with all new Laravel applications so you may start using it immediately. By default, Pint does not require any configuration and wil
- **Installation**: Pint is included in recent releases of the Laravel framework, so installation is typically unnecessary. However, for older applications, you may install Laravel Pint via Composer:  <a name="running-pint"></a>

## PRECOGNITION (Laravel 10)
- **Precognition**: - Introduction - Live Validation     - Using Vue     - Using Vue and Inertia     - Using React     - Using React and Inertia     - Using Alpine and Blade     - Configuring Axios - Customizing Validation Rules - Handling File Uploads - Managing Side-Effects - Testing  <a name="introduction"></a>
- **Introduction**: Laravel Precognition allows you to anticipate the outcome of a future HTTP request. One of the primary use cases of Precognition is the ability to provide "live" validation for your frontend JavaScript application without having to duplicate your application's backend validation rules. Precognition pairs especially well with Laravel's Inertia-based
- **Using Vue**: Using Laravel Precognition, you can offer live validation experiences to your users without having to duplicate your validation rules in your frontend Vue application. To illustrate how it works, let's build a form for creating new users within our application.  First, to enable Precognition for a route, the HandlePrecognitiveRequests middleware sh

## PROCESSES (Laravel 10)
- **Processes**: - Introduction - Invoking Processes     - Process Options     - Process Output     - Pipelines - Asynchronous Processes     - Process IDs and Signals     - Asynchronous Process Output - Concurrent Processes     - Naming Pool Processes     - Pool Process IDs and Signals - Testing     - Faking Processes     - Faking Specific Processes     - Faking Pr
- **Introduction**: Laravel provides an expressive, minimal API around the Symfony Process component, allowing you to conveniently invoke external processes from your Laravel application. Laravel's process features are focused on the most common use cases and a wonderful developer experience.  <a name="invoking-processes"></a>
- **Invoking Processes**: To invoke a process, you may use the run and start methods offered by the Process facade. The run method will invoke a process and wait for the process to finish executing, while the start method is used for asynchronous process execution. We'll examine both approaches within this documentation. First, let's examine how to invoke a basic, synchrono

## PROMPTS (Laravel 10)
- **Prompts**: - Introduction - Installation - Available Prompts     - Text     - Password     - Confirm     - Select     - Multi-select     - Suggest     - Search     - Multi-search     - Pause - Informational Messages - Tables - Spin - Progress Bar - Terminal Considerations - Unsupported Environments and Fallbacks  <a name="introduction"></a>
- **Introduction**: Laravel Prompts is a PHP package for adding beautiful and user-friendly forms to your command-line applications, with browser-like features including placeholder text and validation.  <img src="https://laravel.com/img/docs/prompts-example.png">  Laravel Prompts is perfect for accepting user input in your Artisan console commands, but it may also be
- **Installation**: Laravel Prompts is already included with the latest release of Laravel.  Laravel Prompts may also be installed in your other PHP projects by using the Composer package manager:  <a name="available-prompts"></a>

## PROVIDERS (Laravel 10)
- **Service Providers**: - Introduction - Writing Service Providers     - The Register Method     - The Boot Method - Registering Providers - Deferred Providers  <a name="introduction"></a>
- **Introduction**: Service providers are the central place of all Laravel application bootstrapping. Your own application, as well as all of Laravel's core services, are bootstrapped via service providers.  But, what do we mean by "bootstrapped"? In general, we mean **registering** things, including registering service container bindings, event listeners, middleware,
- **Writing Service Providers**: All service providers extend the Illuminate\Support\ServiceProvider class. Most service providers contain a register and a boot method. Within the register method, you should **only bind things into the service container**. You should never attempt to register any event listeners, routes, or any other piece of functionality within the register meth

## PULSE (Laravel 10)
- **Laravel Pulse**: - Introduction - Installation     - Configuration - Dashboard     - Authorization     - Customization     - Resolving Users     - Cards - Capturing Entries     - Recorders     - Filtering - Performance     - Using a Different Database     - Redis Ingest     - Sampling     - Trimming     - Handling Pulse Exceptions - Custom Cards     - Card Componen
- **Introduction**: Laravel Pulse delivers at-a-glance insights into your application's performance and usage. With Pulse, you can track down bottlenecks like slow jobs and endpoints, find your most active users, and more.  For in-depth debugging of individual events, check out Laravel Telescope.  <a name="installation"></a>
- **Installation**: > [!WARNING]   > Pulse's first-party storage implementation currently requires a MySQL or PostgreSQL database. If you are using a different database engine, you will need a separate MySQL or PostgreSQL database for your Pulse data.  Since Pulse is currently in beta, you may need to adjust your application's composer.json file to allow beta package 

## QUERIES (Laravel 10)
- **Database: Query Builder**: - Introduction - Running Database Queries     - Chunking Results     - Streaming Results Lazily     - Aggregates - Select Statements - Raw Expressions - Joins - Unions - Basic Where Clauses     - Where Clauses     - Or Where Clauses     - Where Not Clauses     - Where Any / All Clauses     - JSON Where Clauses     - Additional Where Clauses     - L
- **Introduction**: Laravel's database query builder provides a convenient, fluent interface to creating and running database queries. It can be used to perform most database operations in your application and works perfectly with all of Laravel's supported database systems.  The Laravel query builder uses PDO parameter binding to protect your application against SQL 
- **Retrieving All Rows From a Table**: You may use the table method provided by the DB facade to begin a query. The table method returns a fluent query builder instance for the given table, allowing you to chain more constraints onto the query and then finally retrieve the results of the query using the get method:      <?php      namespace App\Http\Controllers;      use Illuminate\Supp

## QUEUES (Laravel 10)
- **Queues**: - Introduction     - Connections vs. Queues     - Driver Notes and Prerequisites - Creating Jobs     - Generating Job Classes     - Class Structure     - Unique Jobs     - Encrypted Jobs - Job Middleware     - Rate Limiting     - Preventing Job Overlaps     - Throttling Exceptions - Dispatching Jobs     - Delayed Dispatching     - Synchronous Dispa
- **Introduction**: While building your web application, you may have some tasks, such as parsing and storing an uploaded CSV file, that take too long to perform during a typical web request. Thankfully, Laravel allows you to easily create queued jobs that may be processed in the background. By moving time intensive tasks to a queue, your application can respond to we
- **Connections vs. Queues**: Before getting started with Laravel queues, it is important to understand the distinction between "connections" and "queues". In your config/queue.php configuration file, there is a connections configuration array. This option defines the connections to backend queue services such as Amazon SQS, Beanstalk, or Redis. However, any given queue connect

## RATE-LIMITING (Laravel 10)
- **Rate Limiting**: - Introduction     - Cache Configuration - Basic Usage     - Manually Incrementing Attempts     - Clearing Attempts  <a name="introduction"></a>
- **Introduction**: Laravel includes a simple to use rate limiting abstraction which, in conjunction with your application's cache, provides an easy way to limit any action during a specified window of time.  > [!NOTE]   > If you are interested in rate limiting incoming HTTP requests, please consult the rate limiter middleware documentation.  <a name="cache-configurat
- **Cache Configuration**: Typically, the rate limiter utilizes your default application cache as defined by the default key within your application's cache configuration file. However, you may specify which cache driver the rate limiter should use by defining a limiter key within your application's cache configuration file:      'default' => 'memcached',      'limiter' => '

## REDIRECTS (Laravel 10)
- **HTTP Redirects**: - Creating Redirects - Redirecting To Named Routes - Redirecting To Controller Actions - Redirecting With Flashed Session Data  <a name="creating-redirects"></a>
- **Creating Redirects**: Redirect responses are instances of the Illuminate\Http\RedirectResponse class, and contain the proper headers needed to redirect the user to another URL. There are several ways to generate a RedirectResponse instance. The simplest method is to use the global redirect helper:      Route::get('/dashboard', function () {         return redirect('/hom
- **Redirecting To Named Routes**: When you call the redirect helper with no parameters, an instance of Illuminate\Routing\Redirector is returned, allowing you to call any method on the Redirector instance. For example, to generate a RedirectResponse to a named route, you may use the route method:      return redirect()->route('login');  If your route has parameters, you may pass th

## REDIS (Laravel 10)
- **Redis**: - Introduction - Configuration     - Clusters     - Predis     - PhpRedis - Interacting With Redis     - Transactions     - Pipelining Commands - Pub / Sub  <a name="introduction"></a>
- **Introduction**: Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, and sorted sets.  Before using Redis with Laravel, we encourage you to install and use the PhpRedis PHP extension via PECL. The extension is more complex to install compared to "user-land" PHP pa
- **Configuration**: You may configure your application's Redis settings via the config/database.php configuration file. Within this file, you will see a redis array containing the Redis servers utilized by your application:      'redis' => [          'client' => env('REDIS_CLIENT', 'phpredis'),          'default' => [             'host' => env('REDIS_HOST', '127.0.0.1

## RELEASES (Laravel 10)
- **Release Notes**: - Versioning Scheme - Support Policy - Laravel 10  <a name="versioning-scheme"></a>
- **Versioning Scheme**: Laravel and its other first-party packages follow Semantic Versioning. Major framework releases are released every year (~Q1), while minor and patch releases may be released as often as every week. Minor and patch releases should **never** contain breaking changes.  When referencing the Laravel framework or its components from your application or p
- **Named Arguments**: Named arguments are not covered by Laravel's backwards compatibility guidelines. We may choose to rename function arguments when necessary in order to improve the Laravel codebase. Therefore, using named arguments when calling Laravel methods should be done cautiously and with the understanding that the parameter names may change in the future.  <a

## REQUESTS (Laravel 10)
- **HTTP Requests**: - Introduction - Interacting With The Request     - Accessing the Request     - Request Path, Host, and Method     - Request Headers     - Request IP Address     - Content Negotiation     - PSR-7 Requests - Input     - Retrieving Input     - Input Presence     - Merging Additional Input     - Old Input     - Cookies     - Input Trimming and Normali
- **Introduction**: Laravel's Illuminate\Http\Request class provides an object-oriented way to interact with the current HTTP request being handled by your application as well as retrieve the input, cookies, and files that were submitted with the request.  <a name="interacting-with-the-request"></a>
- **Accessing the Request**: To obtain an instance of the current HTTP request via dependency injection, you should type-hint the Illuminate\Http\Request class on your route closure or controller method. The incoming request instance will automatically be injected by the Laravel service container:      <?php      namespace App\Http\Controllers;      use Illuminate\Http\Redirec

## RESPONSES (Laravel 10)
- **HTTP Responses**: - Creating Responses     - Attaching Headers to Responses     - Attaching Cookies to Responses     - Cookies and Encryption - Redirects     - Redirecting to Named Routes     - Redirecting to Controller Actions     - Redirecting to External Domains     - Redirecting With Flashed Session Data - Other Response Types     - View Responses     - JSON Res
- **Strings and Arrays**: All routes and controllers should return a response to be sent back to the user's browser. Laravel provides several different ways to return responses. The most basic response is returning a string from a route or controller. The framework will automatically convert the string into a full HTTP response:      Route::get('/', function () {         re
- **Response Objects**: Typically, you won't just be returning simple strings or arrays from your route actions. Instead, you will be returning full Illuminate\Http\Response instances or views.  Returning a full Response instance allows you to customize the response's HTTP status code and headers. A Response instance inherits from the Symfony\Component\HttpFoundation\Resp

## REVERB (Laravel 10)
- **Laravel Reverb**: - Introduction - Installation - Configuration     - Application Credentials     - Allowed Origins     - Additional Applications     - SSL - Running the Server     - Debugging     - Restarting - Running Reverb in Production     - Open Files     - Event Loop     - Web Server     - Ports     - Process Management     - Scaling  <a name="introduction"><
- **Introduction**: Laravel Reverb brings blazing-fast and scalable real-time WebSocket communication directly to your Laravel application, and provides seamless integration with Laravel’s existing suite of event broadcasting tools.  <a name="installation"></a>
- **Installation**: > [!WARNING]   > Laravel Reverb requires PHP 8.2+ and Laravel 10.47+.  You may use the Composer package manager to install Reverb into your Laravel project:  Once the package is installed, you may run Reverb's installation command to publish the configuration, add Reverb's required environment variables, and enable event broadcasting in your applic

## ROUTING (Laravel 10)
- **Routing**: - Basic Routing     - Redirect Routes     - View Routes     - The Route List - Route Parameters     - Required Parameters     - Optional Parameters     - Regular Expression Constraints - Named Routes - Route Groups     - Middleware     - Controllers     - Subdomain Routing     - Route Prefixes     - Route Name Prefixes - Route Model Binding     - I
- **Basic Routing**: The most basic Laravel routes accept a URI and a closure, providing a very simple and expressive method of defining routes and behavior without complicated routing configuration files:      use Illuminate\Support\Facades\Route;      Route::get('/greeting', function () {         return 'Hello World';     });  <a name="the-default-route-files"></a>
- **The Default Route Files**: All Laravel routes are defined in your route files, which are located in the routes directory. These files are automatically loaded by your application's App\Providers\RouteServiceProvider. The routes/web.php file defines routes that are for your web interface. These routes are assigned the web middleware group, which provides features like session

## SAIL (Laravel 10)
- **Laravel Sail**: - Introduction - Installation and Setup     - Installing Sail Into Existing Applications     - Configuring A Shell Alias - Starting and Stopping Sail - Executing Commands     - Executing PHP Commands     - Executing Composer Commands     - Executing Artisan Commands     - Executing Node / NPM Commands - Interacting With Databases     - MySQL     - 
- **Introduction**: Laravel Sail is a light-weight command-line interface for interacting with Laravel's default Docker development environment. Sail provides a great starting point for building a Laravel application using PHP, MySQL, and Redis without requiring prior Docker experience.  At its heart, Sail is the docker-compose.yml file and the sail script that is sto
- **Installation and Setup**: Laravel Sail is automatically installed with all new Laravel applications so you may start using it immediately. To learn how to create a new Laravel application, please consult Laravel's installation documentation for your operating system. During installation, you will be asked to choose which Sail supported services your application will be inte

## SANCTUM (Laravel 10)
- **Laravel Sanctum**: - Introduction     - How it Works - Installation - Configuration     - Overriding Default Models - API Token Authentication     - Issuing API Tokens     - Token Abilities     - Protecting Routes     - Revoking Tokens     - Token Expiration - SPA Authentication     - Configuration     - Authenticating     - Protecting Routes     - Authorizing Privat
- **Introduction**: Laravel Sanctum provides a featherweight authentication system for SPAs (single page applications), mobile applications, and simple, token based APIs. Sanctum allows each user of your application to generate multiple API tokens for their account. These tokens may be granted abilities / scopes which specify which actions the tokens are allowed to pe
- **How it Works**: Laravel Sanctum exists to solve two separate problems. Let's discuss each before digging deeper into the library.  <a name="how-it-works-api-tokens"></a>

## SCHEDULING (Laravel 10)
- **Task Scheduling**: - Introduction - Defining Schedules     - Scheduling Artisan Commands     - Scheduling Queued Jobs     - Scheduling Shell Commands     - Schedule Frequency Options     - Timezones     - Preventing Task Overlaps     - Running Tasks on One Server     - Background Tasks     - Maintenance Mode - Running the Scheduler     - Sub-Minute Scheduled Tasks   
- **Introduction**: In the past, you may have written a cron configuration entry for each task you needed to schedule on your server. However, this can quickly become a pain because your task schedule is no longer in source control and you must SSH into your server to view your existing cron entries or add additional entries.  Laravel's command scheduler offers a fres
- **Defining Schedules**: You may define all of your scheduled tasks in the schedule method of your application's App\Console\Kernel class. To get started, let's take a look at an example. In this example, we will schedule a closure to be called every day at midnight. Within the closure we will execute a database query to clear a table:      <?php      namespace App\Console

## SCOUT (Laravel 10)
- **Laravel Scout**: - Introduction - Installation     - Queueing - Driver Prerequisites     - Algolia     - Meilisearch     - Typesense - Configuration     - Configuring Model Indexes     - Configuring Searchable Data     - Configuring the Model ID     - Configuring Search Engines per Model     - Identifying Users - Database / Collection Engines     - Database Engine 
- **Introduction**: Laravel Scout provides a simple, driver based solution for adding full-text search to your Eloquent models. Using model observers, Scout will automatically keep your search indexes in sync with your Eloquent records.  Currently, Scout ships with Algolia, Meilisearch, Typesense, and MySQL / PostgreSQL (database) drivers. In addition, Scout includes 
- **Installation**: First, install Scout via the Composer package manager:  After installing Scout, you should publish the Scout configuration file using the vendor:publish Artisan command. This command will publish the scout.php configuration file to your application's config directory:  Finally, add the Laravel\Scout\Searchable trait to the model you would like to m

## SEEDING (Laravel 10)
- **Database: Seeding**: - Introduction - Writing Seeders     - Using Model Factories     - Calling Additional Seeders     - Muting Model Events - Running Seeders  <a name="introduction"></a>
- **Introduction**: Laravel includes the ability to seed your database with data using seed classes. All seed classes are stored in the database/seeders directory. By default, a DatabaseSeeder class is defined for you. From this class, you may use the call method to run other seed classes, allowing you to control the seeding order.  > [!NOTE]   > Mass assignment prote
- **Writing Seeders**: To generate a seeder, execute the make:seeder Artisan command. All seeders generated by the framework will be placed in the database/seeders directory:  A seeder class only contains one method by default: run. This method is called when the db:seed Artisan command is executed. Within the run method, you may insert data into your database however yo

## SESSION (Laravel 10)
- **HTTP Session**: - Introduction     - Configuration     - Driver Prerequisites - Interacting With the Session     - Retrieving Data     - Storing Data     - Flash Data     - Deleting Data     - Regenerating the Session ID - Session Blocking - Adding Custom Session Drivers     - Implementing the Driver     - Registering the Driver  <a name="introduction"></a>
- **Introduction**: Since HTTP driven applications are stateless, sessions provide a way to store information about the user across multiple requests. That user information is typically placed in a persistent store / backend that can be accessed from subsequent requests.  Laravel ships with a variety of session backends that are accessed through an expressive, unified
- **Configuration**: Your application's session configuration file is stored at config/session.php. Be sure to review the options available to you in this file. By default, Laravel is configured to use the file session driver, which will work well for many applications. If your application will be load balanced across multiple web servers, you should choose a centraliz

## SOCIALITE (Laravel 10)
- **Laravel Socialite**: - Introduction - Installation - Upgrading Socialite - Configuration - Authentication     - Routing     - Authentication and Storage     - Access Scopes     - Slack Bot Scopes     - Optional Parameters - Retrieving User Details  <a name="introduction"></a>
- **Introduction**: In addition to typical, form based authentication, Laravel also provides a simple, convenient way to authenticate with OAuth providers using Laravel Socialite. Socialite currently supports authentication via Facebook, Twitter, LinkedIn, Google, GitHub, GitLab, Bitbucket, and Slack.  > [!NOTE]   > Adapters for other platforms are available via the c
- **Installation**: To get started with Socialite, use the Composer package manager to add the package to your project's dependencies:  <a name="upgrading-socialite"></a>

## STARTER-KITS (Laravel 10)
- **Starter Kits**: - Introduction - Laravel Breeze     - Installation     - Breeze and Blade     - Breeze and Livewire     - Breeze and React / Vue     - Breeze and Next.js / API - Laravel Jetstream  <a name="introduction"></a>
- **Introduction**: To give you a head start building your new Laravel application, we are happy to offer authentication and application starter kits. These kits automatically scaffold your application with the routes, controllers, and views you need to register and authenticate your application's users.  While you are welcome to use these starter kits, they are not r
- **Laravel Breeze**: Laravel Breeze is a minimal, simple implementation of all of Laravel's authentication features, including login, registration, password reset, email verification, and password confirmation. In addition, Breeze includes a simple "profile" page where the user may update their name, email address, and password.  Laravel Breeze's default view layer is 

## STRINGS (Laravel 10)
- **Introduction**: Laravel includes a variety of functions for manipulating string values. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.  <a name="available-methods"></a>
- **Available Methods**: <style>     .collection-method-list > p {         columns: 10.8em 3; -moz-columns: 10.8em 3; -webkit-columns: 10.8em 3;     }      .collection-method-list a {         display: block;         overflow: hidden;         text-overflow: ellipsis;         white-space: nowrap;     } </style>  <a name="strings-method-list"></a>
- **Strings**: <div class="collection-method-list" markdown="1">  \__ class_basename e preg_replace_array Str::after Str::afterLast Str::apa Str::ascii Str::before Str::beforeLast Str::between Str::betweenFirst Str::camel Str::charAt Str::contains Str::containsAll Str::endsWith Str::excerpt Str::finish Str::headline Str::inlineMarkdown Str::is Str::isAscii Str::i

## STRUCTURE (Laravel 10)
- **Directory Structure**: - Introduction - The Root Directory     - The app Directory     - The bootstrap Directory     - The config Directory     - The database Directory     - The public Directory     - The resources Directory     - The routes Directory     - The storage Directory     - The tests Directory     - The vendor Directory - The App Directory     - The Broadcast
- **Introduction**: The default Laravel application structure is intended to provide a great starting point for both large and small applications. But you are free to organize your application however you like. Laravel imposes almost no restrictions on where any given class is located - as long as Composer can autoload the class.  > [!NOTE]   > New to Laravel? Check o
- **The App Directory**: The app directory contains the core code of your application. We'll explore this directory in more detail soon; however, almost all of the classes in your application will be in this directory.  <a name="the-bootstrap-directory"></a>

## TELESCOPE (Laravel 10)
- **Laravel Telescope**: - Introduction - Installation     - Local Only Installation     - Configuration     - Data Pruning     - Dashboard Authorization - Upgrading Telescope - Filtering     - Entries     - Batches - Tagging - Available Watchers     - Batch Watcher     - Cache Watcher     - Command Watcher     - Dump Watcher     - Event Watcher     - Exception Watcher    
- **Introduction**: Laravel Telescope makes a wonderful companion to your local Laravel development environment. Telescope provides insight into the requests coming into your application, exceptions, log entries, database queries, queued jobs, mail, notifications, cache operations, scheduled tasks, variable dumps, and more.  <img src="https://laravel.com/img/docs/tele
- **Installation**: You may use the Composer package manager to install Telescope into your Laravel project:  After installing Telescope, publish its assets using the telescope:install Artisan command. After installing Telescope, you should also run the migrate command in order to create the tables needed to store Telescope's data:  Finally, you may access the Telesco

## TESTING (Laravel 10)
- **Testing: Getting Started**: - Introduction - Environment - Creating Tests - Running Tests     - Running Tests in Parallel     - Reporting Test Coverage     - Profiling Tests  <a name="introduction"></a>
- **Introduction**: Laravel is built with testing in mind. In fact, support for testing with PHPUnit is included out of the box and a phpunit.xml file is already set up for your application. The framework also ships with convenient helper methods that allow you to expressively test your applications.  By default, your application's tests directory contains two directo
- **Environment**: When running tests, Laravel will automatically set the configuration environment to testing because of the environment variables defined in the phpunit.xml file. Laravel also automatically configures the session and cache to the array driver so that no session or cache data will be persisted while testing.  You are free to define other testing envi

## UPGRADE (Laravel 10)
- **High Impact Changes**: <div class="content-list" markdown="1">  - Updating Dependencies - Updating Minimum Stability  </div>  <a name="medium-impact-changes"></a>
- **Medium Impact Changes**: <div class="content-list" markdown="1">  - Database Expressions - Model "Dates" Property - Monolog 3 - Redis Cache Tags - Service Mocking - The Language Directory  </div>  <a name="low-impact-changes"></a>
- **Low Impact Changes**: <div class="content-list" markdown="1">  - Closure Validation Rule Messages - Form Request after Method - Public Path Binding - Query Exception Constructor - Rate Limiter Return Values - The Redirect::home Method - The Bus::dispatchNow Method - The registerPolicies Method - ULID Columns  </div>  <a name="upgrade-10.0"></a>

## URLS (Laravel 10)
- **URL Generation**: - Introduction - The Basics     - Generating URLs     - Accessing the Current URL - URLs for Named Routes     - Signed URLs - URLs for Controller Actions - Default Values  <a name="introduction"></a>
- **Introduction**: Laravel provides several helpers to assist you in generating URLs for your application. These helpers are primarily helpful when building links in your templates and API responses, or when generating redirect responses to another part of your application.  <a name="the-basics"></a>
- **Generating URLs**: The url helper may be used to generate arbitrary URLs for your application. The generated URL will automatically use the scheme (HTTP or HTTPS) and host from the current request being handled by the application:      $post = App\Models\Post::find(1);      echo url("/posts/{$post->id}");      // http://example.com/posts/1  <a name="accessing-the-cur

## VALET (Laravel 10)
- **Laravel Valet**: - Introduction - Installation     - Upgrading Valet - Serving Sites     - The "Park" Command     - The "Link" Command     - Securing Sites With TLS     - Serving a Default Site     - Per-Site PHP Versions - Sharing Sites     - Sharing Sites on Your Local Network - Site Specific Environment Variables - Proxying Services - Custom Valet Drivers     - 
- **Introduction**: > [!NOTE]   > Looking for an even easier way to develop Laravel applications on macOS? Check out Laravel Herd. Herd includes everything you need to get started with Laravel development, including Valet, PHP, and Composer.  Laravel Valet is a development environment for macOS minimalists. Laravel Valet configures your Mac to always run Nginx in the 
- **Installation**: > [!WARNING]   > Valet requires macOS and Homebrew. Before installation, you should make sure that no other programs such as Apache or Nginx are binding to your local machine's port 80.  To get started, you first need to ensure that Homebrew is up to date using the update command:  Next, you should use Homebrew to install PHP:  After installing PHP

## VALIDATION (Laravel 10)
- **Validation**: - Introduction - Validation Quickstart     - Defining the Routes     - Creating the Controller     - Writing the Validation Logic     - Displaying the Validation Errors     - Repopulating Forms     - A Note on Optional Fields     - Validation Error Response Format - Form Request Validation     - Creating Form Requests     - Authorizing Form Request
- **Introduction**: Laravel provides several different approaches to validate your application's incoming data. It is most common to use the validate method available on all incoming HTTP requests. However, we will discuss other approaches to validation as well.  Laravel includes a wide variety of convenient validation rules that you may apply to data, even providing 
- **Validation Quickstart**: To learn about Laravel's powerful validation features, let's look at a complete example of validating a form and displaying the error messages back to the user. By reading this high-level overview, you'll be able to gain a good general understanding of how to validate incoming request data using Laravel:  <a name="quick-defining-the-routes"></a>

## VERIFICATION (Laravel 10)
- **Email Verification**: - Introduction     - Model Preparation     - Database Preparation - Routing     - The Email Verification Notice     - The Email Verification Handler     - Resending the Verification Email     - Protecting Routes - Customization - Events  <a name="introduction"></a>
- **Introduction**: Many web applications require users to verify their email addresses before using the application. Rather than forcing you to re-implement this feature by hand for each application you create, Laravel provides convenient built-in services for sending and verifying email verification requests.  > [!NOTE]   > Want to get started fast? Install one of t
- **Model Preparation**: Before getting started, verify that your App\Models\User model implements the Illuminate\Contracts\Auth\MustVerifyEmail contract:      <?php      namespace App\Models;      use Illuminate\Contracts\Auth\MustVerifyEmail;     use Illuminate\Foundation\Auth\User as Authenticatable;     use Illuminate\Notifications\Notifiable;      class User extends A

## VIEWS (Laravel 10)
- **Views**: - Introduction     - Writing Views in React / Vue - Creating and Rendering Views     - Nested View Directories     - Creating the First Available View     - Determining if a View Exists - Passing Data to Views     - Sharing Data With All Views - View Composers     - View Creators - Optimizing Views  <a name="introduction"></a>
- **Introduction**: Of course, it's not practical to return entire HTML documents strings directly from your routes and controllers. Thankfully, views provide a convenient way to place all of our HTML in separate files.  Views separate your controller / application logic from your presentation logic and are stored in the resources/views directory. When using Laravel, 
- **Writing Views in React / Vue**: Instead of writing their frontend templates in PHP via Blade, many developers have begun to prefer to write their templates using React or Vue. Laravel makes this painless thanks to Inertia, a library that makes it a cinch to tie your React / Vue frontend to your Laravel backend without the typical complexities of building an SPA.  Our Breeze and J

## VITE (Laravel 10)
- **Asset Bundling (Vite)**: - Introduction - Installation & Setup   - Installing Node   - Installing Vite and the Laravel Plugin   - Configuring Vite   - Loading Your Scripts and Styles - Running Vite - Working With JavaScript   - Aliases   - Vue   - React   - Inertia   - URL Processing - Working With Stylesheets - Working With Blade and Routes   - Processing Static Assets Wi
- **Introduction**: Vite is a modern frontend build tool that provides an extremely fast development environment and bundles your code for production. When building applications with Laravel, you will typically use Vite to bundle your application's CSS and JavaScript files into production ready assets.  Laravel integrates seamlessly with Vite by providing an official 
- **Choosing Between Vite and Laravel Mix**: Before transitioning to Vite, new Laravel applications utilized Mix, which is powered by webpack, when bundling assets. Vite focuses on providing a faster and more productive experience when building rich JavaScript applications. If you are developing a Single Page Application (SPA), including those developed with tools like Inertia, Vite will be t

# Laravel 11


## ARTISAN (Laravel 11)
- **Artisan Console**: - Introduction     - Tinker (REPL) - Writing Commands     - Generating Commands     - Command Structure     - Closure Commands     - Isolatable Commands - Defining Input Expectations     - Arguments     - Options     - Input Arrays     - Input Descriptions     - Prompting for Missing Input - Command I/O     - Retrieving Input     - Prompting for In
- **Introduction**: Artisan is the command line interface included with Laravel. Artisan exists at the root of your application as the artisan script and provides a number of helpful commands that can assist you while you build your application. To view a list of all available Artisan commands, you may use the list command:  Every command also includes a "help" screen
- **Laravel Sail**: If you are using Laravel Sail as your local development environment, remember to use the sail command line to invoke Artisan commands. Sail will execute your Artisan commands within your application's Docker containers:  <a name="tinker"></a>

## AUTHENTICATION (Laravel 11)
- **Authentication**: - Introduction     - Starter Kits     - Database Considerations     - Ecosystem Overview - Authentication Quickstart     - Install a Starter Kit     - Retrieving the Authenticated User     - Protecting Routes     - Login Throttling - Manually Authenticating Users     - Remembering Users     - Other Authentication Methods - HTTP Basic Authentication
- **Introduction**: Many web applications provide a way for their users to authenticate with the application and "login". Implementing this feature in web applications can be a complex and potentially risky endeavor. For this reason, Laravel strives to give you the tools you need to implement authentication quickly, securely, and easily.  At its core, Laravel's authen
- **Starter Kits**: Want to get started fast? Install a Laravel application starter kit in a fresh Laravel application. After migrating your database, navigate your browser to /register or any other URL that is assigned to your application. The starter kits will take care of scaffolding your entire authentication system!  **Even if you choose not to use a starter kit 

## AUTHORIZATION (Laravel 11)
- **Authorization**: - Introduction - Gates     - Writing Gates     - Authorizing Actions     - Gate Responses     - Intercepting Gate Checks     - Inline Authorization - Creating Policies     - Generating Policies     - Registering Policies - Writing Policies     - Policy Methods     - Policy Responses     - Methods Without Models     - Guest Users     - Policy Filter
- **Introduction**: In addition to providing built-in authentication services, Laravel also provides a simple way to authorize user actions against a given resource. For example, even though a user is authenticated, they may not be authorized to update or delete certain Eloquent models or database records managed by your application. Laravel's authorization features p
- **Writing Gates**: > [!WARNING]   > Gates are a great way to learn the basics of Laravel's authorization features; however, when building robust Laravel applications you should consider using policies to organize your authorization rules.  Gates are simply closures that determine if a user is authorized to perform a given action. Typically, gates are defined within t

## BILLING (Laravel 11)
- **Laravel Cashier (Stripe)**: - Introduction - Upgrading Cashier - Installation - Configuration     - Billable Model     - API Keys     - Currency Configuration     - Tax Configuration     - Logging     - Using Custom Models - Quickstart     - Selling Products     - Selling Subscriptions - Customers     - Retrieving Customers     - Creating Customers     - Updating Customers   
- **Introduction**: Laravel Cashier Stripe provides an expressive, fluent interface to Stripe's subscription billing services. It handles almost all of the boilerplate subscription billing code you are dreading writing. In addition to basic subscription management, Cashier can handle coupons, swapping subscription, subscription "quantities", cancellation grace periods
- **Upgrading Cashier**: When upgrading to a new version of Cashier, it's important that you carefully review the upgrade guide.  > [!WARNING]   > To prevent breaking changes, Cashier uses a fixed Stripe API version. Cashier 15 utilizes Stripe API version 2023-10-16. The Stripe API version will be updated on minor releases in order to make use of new Stripe features and im

## BLADE (Laravel 11)
- **Blade Templates**: - Introduction     - Supercharging Blade With Livewire - Displaying Data     - HTML Entity Encoding     - Blade and JavaScript Frameworks - Blade Directives     - If Statements     - Switch Statements     - Loops     - The Loop Variable     - Conditional Classes     - Additional Attributes     - Including Subviews     - The @once Directive     - Ra
- **Introduction**: Blade is the simple, yet powerful templating engine that is included with Laravel. Unlike some PHP templating engines, Blade does not restrict you from using plain PHP code in your templates. In fact, all Blade templates are compiled into plain PHP code and cached until they are modified, meaning Blade adds essentially zero overhead to your applica
- **Supercharging Blade With Livewire**: Want to take your Blade templates to the next level and build dynamic interfaces with ease? Check out Laravel Livewire. Livewire allows you to write Blade components that are augmented with dynamic functionality that would typically only be possible via frontend frameworks like React or Vue, providing a great approach to building modern, reactive f

## BROADCASTING (Laravel 11)
- **Broadcasting**: - Introduction - Server Side Installation     - Configuration     - Reverb     - Pusher Channels     - Ably - Client Side Installation     - Reverb     - Pusher Channels     - Ably - Concept Overview     - Using an Example Application - Defining Broadcast Events     - Broadcast Name     - Broadcast Data     - Broadcast Queue     - Broadcast Conditi
- **Introduction**: In many modern web applications, WebSockets are used to implement realtime, live-updating user interfaces. When some data is updated on the server, a message is typically sent over a WebSocket connection to be handled by the client. WebSockets provide a more efficient alternative to continually polling your application's server for data changes tha
- **Supported Drivers**: By default, Laravel includes three server-side broadcasting drivers for you to choose from: Laravel Reverb, Pusher Channels, and Ably.  > [!NOTE]   > Before diving into event broadcasting, make sure you have read Laravel's documentation on events and listeners.  <a name="server-side-installation"></a>

## CACHE (Laravel 11)
- **Cache**: - Introduction - Configuration     - Driver Prerequisites - Cache Usage     - Obtaining a Cache Instance     - Retrieving Items From the Cache     - Storing Items in the Cache     - Removing Items From the Cache     - The Cache Helper - Atomic Locks     - Managing Locks     - Managing Locks Across Processes - Adding Custom Cache Drivers     - Writi
- **Introduction**: Some of the data retrieval or processing tasks performed by your application could be CPU intensive or take several seconds to complete. When this is the case, it is common to cache the retrieved data for a time so it can be retrieved quickly on subsequent requests for the same data. The cached data is usually stored in a very fast data store such 
- **Configuration**: Your application's cache configuration file is located at config/cache.php. In this file, you may specify which cache store you would like to be used by default throughout your application. Laravel supports popular caching backends like Memcached, Redis, DynamoDB, and relational databases out of the box. In addition, a file based cache driver is av

## CASHIER-PADDLE (Laravel 11)
- **Laravel Cashier (Paddle)**: - Introduction - Upgrading Cashier - Installation     - Paddle Sandbox - Configuration     - Billable Model     - API Keys     - Paddle JS     - Currency Configuration     - Overriding Default Models - Quickstart     - Selling Products     - Selling Subscriptions - Checkout Sessions     - Overlay Checkout     - Inline Checkout     - Guest Checkouts
- **Introduction**: > [!WARNING]   > This documentation is for Cashier Paddle 2.x's integration with Paddle Billing. If you're still using Paddle Classic, you should use Cashier Paddle 1.x.  Laravel Cashier Paddle provides an expressive, fluent interface to Paddle's subscription billing services. It handles almost all of the boilerplate subscription billing code you a
- **Upgrading Cashier**: When upgrading to a new version of Cashier, it's important that you carefully review the upgrade guide.  <a name="installation"></a>

## COLLECTIONS (Laravel 11)
- **Collections**: - Introduction     - Creating Collections     - Extending Collections - Available Methods - Higher Order Messages - Lazy Collections     - Introduction     - Creating Lazy Collections     - The Enumerable Contract     - Lazy Collection Methods  <a name="introduction"></a>
- **Introduction**: The Illuminate\Support\Collection class provides a fluent, convenient wrapper for working with arrays of data. For example, check out the following code. We'll use the collect helper to create a new collection instance from the array, run the strtoupper function on each element, and then remove all empty elements:      $collection = collect(['taylo
- **Creating Collections**: As mentioned above, the collect helper returns a new Illuminate\Support\Collection instance for the given array. So, creating a collection is as simple as:      $collection = collect([1, 2, 3]);  > [!NOTE]   > The results of Eloquent queries are always returned as Collection instances.  <a name="extending-collections"></a>

## CONCURRENCY (Laravel 11)
- **Concurrency**: - Introduction - Running Concurrent Tasks - Deferring Concurrent Tasks  <a name="introduction"></a>
- **Introduction**: > [!WARNING] > Laravel's Concurrency facade is currently in beta while we gather community feedback.  Sometimes you may need to execute several slow tasks which do not depend on one another. In many cases, significant performance improvements can be realized by executing the tasks concurrently. Laravel's Concurrency facade provides a simple, conven
- **Concurrency Compatibility**: If you upgraded to Laravel 11.x from a Laravel 10.x application, you may need to add the ConcurrencyServiceProvider to the providers array in your application's config/app.php configuration file:  <a name="how-it-works"></a>

## CONFIGURATION (Laravel 11)
- **Configuration**: - Introduction - Environment Configuration     - Environment Variable Types     - Retrieving Environment Configuration     - Determining the Current Environment     - Encrypting Environment Files - Accessing Configuration Values - Configuration Caching - Configuration Publishing - Debug Mode - Maintenance Mode  <a name="introduction"></a>
- **Introduction**: All of the configuration files for the Laravel framework are stored in the config directory. Each option is documented, so feel free to look through the files and get familiar with the options available to you.  These configuration files allow you to configure things like your database connection information, your mail server information, as well a
- **The `about` Command**: Laravel can display an overview of your application's configuration, drivers, and environment via the about Artisan command.  If you're only interested in a particular section of the application overview output, you may filter for that section using the --only option:  Or, to explore a specific configuration file's values in detail, you may use the

## CONSOLE-TESTS (Laravel 11)
- **Console Tests**: - Introduction - Success / Failure Expectations - Input / Output Expectations - Console Events  <a name="introduction"></a>
- **Introduction**: In addition to simplifying HTTP testing, Laravel provides a simple API for testing your application's custom console commands.  <a name="success-failure-expectations"></a>
- **Success / Failure Expectations**: To get started, let's explore how to make assertions regarding an Artisan command's exit code. To accomplish this, we will use the artisan method to invoke an Artisan command from our test. Then, we will use the assertExitCode method to assert that the command completed with a given exit code:  You may use the assertNotExitCode method to assert tha

## CONTAINER (Laravel 11)
- **Service Container**: - Introduction     - Zero Configuration Resolution     - When to Utilize the Container - Binding     - Binding Basics     - Binding Interfaces to Implementations     - Contextual Binding     - Contextual Attributes     - Binding Primitives     - Binding Typed Variadics     - Tagging     - Extending Bindings - Resolving     - The Make Method     - A
- **Introduction**: The Laravel service container is a powerful tool for managing class dependencies and performing dependency injection. Dependency injection is a fancy phrase that essentially means this: class dependencies are "injected" into the class via the constructor or, in some cases, "setter" methods.  Let's look at a simple example:      <?php      namespace
- **Zero Configuration Resolution**: If a class has no dependencies or only depends on other concrete classes (not interfaces), the container does not need to be instructed on how to resolve that class. For example, you may place the following code in your routes/web.php file:      <?php      class Service     {         // ...     }      Route::get('/', function (Service $service) {  

## CONTEXT (Laravel 11)
- **Context**: - Introduction     - How it Works - Capturing Context     - Stacks - Retrieving Context     - Determining Item Existence - Removing Context - Hidden Context - Events     - Dehydrating     - Hydrated  <a name="introduction"></a>
- **Introduction**: Laravel's "context" capabilities enable you to capture, retrieve, and share information throughout requests, jobs, and commands executing within your application. This captured information is also included in logs written by your application, giving you deeper insight into the surrounding code execution history that occurred before a log entry was 
- **How it Works**: The best way to understand Laravel's context capabilities is to see it in action using  the built-in logging features. To get started, you may add information to the context using the Context facade. In this example, we will use a middleware to add the request URL and a unique trace ID to the context on every incoming request:  Information added to

## CONTRACTS (Laravel 11)
- **Contracts**: - Introduction     - Contracts vs. Facades - When to Use Contracts - How to Use Contracts - Contract Reference  <a name="introduction"></a>
- **Introduction**: Laravel's "contracts" are a set of interfaces that define the core services provided by the framework. For example, an Illuminate\Contracts\Queue\Queue contract defines the methods needed for queueing jobs, while the Illuminate\Contracts\Mail\Mailer contract defines the methods needed for sending e-mail.  Each contract has a corresponding implement
- **Contracts vs. Facades**: Laravel's facades and helper functions provide a simple way of utilizing Laravel's services without needing to type-hint and resolve contracts out of the service container. In most cases, each facade has an equivalent contract.  Unlike facades, which do not require you to require them in your class' constructor, contracts allow you to define explic

## CONTROLLERS (Laravel 11)
- **Controllers**: - Introduction - Writing Controllers     - Basic Controllers     - Single Action Controllers - Controller Middleware - Resource Controllers     - Partial Resource Routes     - Nested Resources     - Naming Resource Routes     - Naming Resource Route Parameters     - Scoping Resource Routes     - Localizing Resource URIs     - Supplementing Resource
- **Introduction**: Instead of defining all of your request handling logic as closures in your route files, you may wish to organize this behavior using "controller" classes. Controllers can group related request handling logic into a single class. For example, a UserController class might handle all incoming requests related to users, including showing, creating, upd
- **Basic Controllers**: To quickly generate a new controller, you may run the make:controller Artisan command. By default, all of the controllers for your application are stored in the app/Http/Controllers directory:  Let's take a look at an example of a basic controller. A controller may have any number of public methods which will respond to incoming HTTP requests:     

## CSRF (Laravel 11)
- **CSRF Protection**: - Introduction - Preventing CSRF Requests     - Excluding URIs - X-CSRF-Token - X-XSRF-Token  <a name="csrf-introduction"></a>
- **Introduction**: Cross-site request forgeries are a type of malicious exploit whereby unauthorized commands are performed on behalf of an authenticated user. Thankfully, Laravel makes it easy to protect your application from cross-site request forgery (CSRF) attacks.  <a name="csrf-explanation"></a>
- **An Explanation of the Vulnerability**: In case you're not familiar with cross-site request forgeries, let's discuss an example of how this vulnerability can be exploited. Imagine your application has a /user/email route that accepts a POST request to change the authenticated user's email address. Most likely, this route expects an email input field to contain the email address the user 

## DATABASE-TESTING (Laravel 11)
- **Database Testing**: - Introduction     - Resetting the Database After Each Test - Model Factories - Running Seeders - Available Assertions  <a name="introduction"></a>
- **Introduction**: Laravel provides a variety of helpful tools and assertions to make it easier to test your database driven applications. In addition, Laravel model factories and seeders make it painless to create test database records using your application's Eloquent models and relationships. We'll discuss all of these powerful features in the following documentat
- **Resetting the Database After Each Test**: Before proceeding much further, let's discuss how to reset your database after each of your tests so that data from a previous test does not interfere with subsequent tests. Laravel's included Illuminate\Foundation\Testing\RefreshDatabase trait will take care of this for you. Simply use the trait on your test class:  The Illuminate\Foundation\Testi

## DATABASE (Laravel 11)
- **Database: Getting Started**: - Introduction     - Configuration     - Read and Write Connections - Running SQL Queries     - Using Multiple Database Connections     - Listening for Query Events     - Monitoring Cumulative Query Time - Database Transactions - Connecting to the Database CLI - Inspecting Your Databases - Monitoring Your Databases  <a name="introduction"></a>
- **Introduction**: Almost every modern web application interacts with a database. Laravel makes interacting with databases extremely simple across a variety of supported databases using raw SQL, a fluent query builder, and the Eloquent ORM. Currently, Laravel provides first-party support for five databases:  <div class="content-list" markdown="1">  - MariaDB 10.3+ (V
- **Configuration**: The configuration for Laravel's database services is located in your application's config/database.php configuration file. In this file, you may define all of your database connections, as well as specify which connection should be used by default. Most of the configuration options within this file are driven by the values of your application's env

## DEPLOYMENT (Laravel 11)
- **Deployment**: - Introduction - Server Requirements - Server Configuration     - Nginx     - FrankenPHP     - Directory Permissions - Optimization     - Caching Configuration     - Caching Events     - Caching Routes     - Caching Views - Debug Mode - The Health Route - Easy Deployment With Forge / Vapor  <a name="introduction"></a>
- **Introduction**: When you're ready to deploy your Laravel application to production, there are some important things you can do to make sure your application is running as efficiently as possible. In this document, we'll cover some great starting points for making sure your Laravel application is deployed properly.  <a name="server-requirements"></a>
- **Server Requirements**: The Laravel framework has a few system requirements. You should ensure that your web server has the following minimum PHP version and extensions:  <div class="content-list" markdown="1">  - PHP >= 8.2 - Ctype PHP Extension - cURL PHP Extension - DOM PHP Extension - Fileinfo PHP Extension - Filter PHP Extension - Hash PHP Extension - Mbstring PHP Ex

## DUSK (Laravel 11)
- **Laravel Dusk**: - Introduction - Installation     - Managing ChromeDriver Installations     - Using Other Browsers - Getting Started     - Generating Tests     - Resetting the Database After Each Test     - Running Tests     - Environment Handling - Browser Basics     - Creating Browsers     - Navigation     - Resizing Browser Windows     - Browser Macros     - Au
- **Introduction**: Laravel Dusk provides an expressive, easy-to-use browser automation and testing API. By default, Dusk does not require you to install JDK or Selenium on your local computer. Instead, Dusk uses a standalone ChromeDriver installation. However, you are free to utilize any other Selenium compatible driver you wish.  <a name="installation"></a>
- **Installation**: To get started, you should install Google Chrome and add the laravel/dusk Composer dependency to your project:  > [!WARNING]   > If you are manually registering Dusk's service provider, you should **never** register it in your production environment, as doing so could lead to arbitrary users being able to authenticate with your application.  After 

## ELOQUENT-COLLECTIONS (Laravel 11)
- **Eloquent: Collections**: - Introduction - Available Methods - Custom Collections  <a name="introduction"></a>
- **Introduction**: All Eloquent methods that return more than one model result will return instances of the Illuminate\Database\Eloquent\Collection class, including results retrieved via the get method or accessed via a relationship. The Eloquent collection object extends Laravel's base collection, so it naturally inherits dozens of methods used to fluently work with
- **Eloquent Collection Conversion**: While most Eloquent collection methods return a new instance of an Eloquent collection, the collapse, flatten, flip, keys, pluck, and zip methods return a base collection instance. Likewise, if a map operation returns a collection that does not contain any Eloquent models, it will be converted to a base collection instance.  <a name="available-meth

## ELOQUENT-FACTORIES (Laravel 11)
- **Eloquent: Factories**: - Introduction - Defining Model Factories     - Generating Factories     - Factory States     - Factory Callbacks - Creating Models Using Factories     - Instantiating Models     - Persisting Models     - Sequences - Factory Relationships     - Has Many Relationships     - Belongs To Relationships     - Many to Many Relationships     - Polymorphic 
- **Introduction**: When testing your application or seeding your database, you may need to insert a few records into your database. Instead of manually specifying the value of each column, Laravel allows you to define a set of default attributes for each of your Eloquent models using model factories.  To see an example of how to write a factory, take a look at the da
- **Generating Factories**: To create a factory, execute the make:factory Artisan command:  The new factory class will be placed in your database/factories directory.  <a name="factory-and-model-discovery-conventions"></a>

## ELOQUENT-MUTATORS (Laravel 11)
- **Eloquent: Mutators & Casting**: - Introduction - Accessors and Mutators     - Defining an Accessor     - Defining a Mutator - Attribute Casting     - Array and JSON Casting     - Date Casting     - Enum Casting     - Encrypted Casting     - Query Time Casting - Custom Casts     - Value Object Casting     - Array / JSON Serialization     - Inbound Casting     - Cast Parameters    
- **Introduction**: Accessors, mutators, and attribute casting allow you to transform Eloquent attribute values when you retrieve or set them on model instances. For example, you may want to use the Laravel encrypter to encrypt a value while it is stored in the database, and then automatically decrypt the attribute when you access it on an Eloquent model. Or, you may 
- **Defining an Accessor**: An accessor transforms an Eloquent attribute value when it is accessed. To define an accessor, create a protected method on your model to represent the accessible attribute. This method name should correspond to the "camel case" representation of the true underlying model attribute / database column when applicable.  In this example, we'll define a

## ELOQUENT-RELATIONSHIPS (Laravel 11)
- **Eloquent: Relationships**: - Introduction - Defining Relationships     - One to One / Has One     - One to Many / Has Many     - One to Many (Inverse) / Belongs To     - Has One of Many     - Has One Through     - Has Many Through - Scoped Relationships - Many to Many Relationships     - Retrieving Intermediate Table Columns     - Filtering Queries via Intermediate Table Col
- **Introduction**: Database tables are often related to one another. For example, a blog post may have many comments or an order could be related to the user who placed it. Eloquent makes managing and working with these relationships easy, and supports a variety of common relationships:  <div class="content-list" markdown="1">  - One To One - One To Many - Many To Ma
- **Defining Relationships**: Eloquent relationships are defined as methods on your Eloquent model classes. Since relationships also serve as powerful query builders, defining relationships as methods provides powerful method chaining and querying capabilities. For example, we may chain additional query constraints on this posts relationship:      $user->posts()->where('active'

## ELOQUENT-RESOURCES (Laravel 11)
- **Eloquent: API Resources**: - Introduction - Generating Resources - Concept Overview     - Resource Collections - Writing Resources     - Data Wrapping     - Pagination     - Conditional Attributes     - Conditional Relationships     - Adding Meta Data - Resource Responses  <a name="introduction"></a>
- **Introduction**: When building an API, you may need a transformation layer that sits between your Eloquent models and the JSON responses that are actually returned to your application's users. For example, you may wish to display certain attributes for a subset of users and not others, or you may wish to always include certain relationships in the JSON representati
- **Generating Resources**: To generate a resource class, you may use the make:resource Artisan command. By default, resources will be placed in the app/Http/Resources directory of your application. Resources extend the Illuminate\Http\Resources\Json\JsonResource class:  <a name="generating-resource-collections"></a>

## ELOQUENT-SERIALIZATION (Laravel 11)
- **Eloquent: Serialization**: - Introduction - Serializing Models and Collections     - Serializing to Arrays     - Serializing to JSON - Hiding Attributes From JSON - Appending Values to JSON - Date Serialization  <a name="introduction"></a>
- **Introduction**: When building APIs using Laravel, you will often need to convert your models and relationships to arrays or JSON. Eloquent includes convenient methods for making these conversions, as well as controlling which attributes are included in the serialized representation of your models.  > [!NOTE]   > For an even more robust way of handling Eloquent mod
- **Serializing to Arrays**: To convert a model and its loaded relationships to an array, you should use the toArray method. This method is recursive, so all attributes and all relations (including the relations of relations) will be converted to arrays:      use App\Models\User;      $user = User::with('roles')->first();      return $user->toArray();  The attributesToArray me

## ELOQUENT (Laravel 11)
- **Eloquent: Getting Started**: - Introduction - Generating Model Classes - Eloquent Model Conventions     - Table Names     - Primary Keys     - UUID and ULID Keys     - Timestamps     - Database Connections     - Default Attribute Values     - Configuring Eloquent Strictness - Retrieving Models     - Collections     - Chunking Results     - Chunk Using Lazy Collections     - Cu
- **Introduction**: Laravel includes Eloquent, an object-relational mapper (ORM) that makes it enjoyable to interact with your database. When using Eloquent, each database table has a corresponding "Model" that is used to interact with that table. In addition to retrieving records from the database table, Eloquent models allow you to insert, update, and delete records
- **Laravel Bootcamp**: If you're new to Laravel, feel free to jump into the Laravel Bootcamp. The Laravel Bootcamp will walk you through building your first Laravel application using Eloquent. It's a great way to get a tour of everything that Laravel and Eloquent have to offer.  <a name="generating-model-classes"></a>

## ENCRYPTION (Laravel 11)
- **Encryption**: - Introduction - Configuration     - Gracefully Rotating Encryption Keys - Using the Encrypter  <a name="introduction"></a>
- **Introduction**: Laravel's encryption services provide a simple, convenient interface for encrypting and decrypting text via OpenSSL using AES-256 and AES-128 encryption. All of Laravel's encrypted values are signed using a message authentication code (MAC) so that their underlying value cannot be modified or tampered with once encrypted.  <a name="configuration"><
- **Configuration**: Before using Laravel's encrypter, you must set the key configuration option in your config/app.php configuration file. This configuration value is driven by the APP_KEY environment variable. You should use the php artisan key:generate command to generate this variable's value since the key:generate command will use PHP's secure random bytes generat

## ENVOY (Laravel 11)
- **Laravel Envoy**: - Introduction - Installation - Writing Tasks     - Defining Tasks     - Multiple Servers     - Setup     - Variables     - Stories     - Hooks - Running Tasks     - Confirming Task Execution - Notifications     - Slack     - Discord     - Telegram     - Microsoft Teams  <a name="introduction"></a>
- **Introduction**: Laravel Envoy is a tool for executing common tasks you run on your remote servers. Using Blade style syntax, you can easily setup tasks for deployment, Artisan commands, and more. Currently, Envoy only supports the Mac and Linux operating systems. However, Windows support is achievable using WSL2.  <a name="installation"></a>
- **Installation**: First, install Envoy into your project using the Composer package manager:  Once Envoy has been installed, the Envoy binary will be available in your application's vendor/bin directory:  <a name="writing-tasks"></a>

## ERRORS (Laravel 11)
- **Error Handling**: - Introduction - Configuration - Handling Exceptions     - Reporting Exceptions     - Exception Log Levels     - Ignoring Exceptions by Type     - Rendering Exceptions     - Reportable and Renderable Exceptions - Throttling Reported Exceptions - HTTP Exceptions     - Custom HTTP Error Pages  <a name="introduction"></a>
- **Introduction**: When you start a new Laravel project, error and exception handling is already configured for you; however, at any point, you may use the withExceptions method in your application's bootstrap/app.php to manage how exceptions are reported and rendered by your application.  The $exceptions object provided to the withExceptions closure is an instance o
- **Configuration**: The debug option in your config/app.php configuration file determines how much information about an error is actually displayed to the user. By default, this option is set to respect the value of the APP_DEBUG environment variable, which is stored in your .env file.  During local development, you should set the APP_DEBUG environment variable to tru

## EVENTS (Laravel 11)
- **Events**: - Introduction - Generating Events and Listeners - Registering Events and Listeners     - Event Discovery     - Manually Registering Events     - Closure Listeners - Defining Events - Defining Listeners - Queued Event Listeners     - Manually Interacting With the Queue     - Queued Event Listeners and Database Transactions     - Handling Failed Job
- **Introduction**: Laravel's events provide a simple observer pattern implementation, allowing you to subscribe and listen for various events that occur within your application. Event classes are typically stored in the app/Events directory, while their listeners are stored in app/Listeners. Don't worry if you don't see these directories in your application as they w
- **Generating Events and Listeners**: To quickly generate events and listeners, you may use the make:event and make:listener Artisan commands:  For convenience, you may also invoke the make:event and make:listener Artisan commands without additional arguments. When you do so, Laravel will automatically prompt you for the class name and, when creating a listener, the event it should lis

## FACADES (Laravel 11)
- **Facades**: - Introduction - When to Utilize Facades     - Facades vs. Dependency Injection     - Facades vs. Helper Functions - How Facades Work - Real-Time Facades - Facade Class Reference  <a name="introduction"></a>
- **Introduction**: Throughout the Laravel documentation, you will see examples of code that interacts with Laravel's features via "facades". Facades provide a "static" interface to classes that are available in the application's service container. Laravel ships with many facades which provide access to almost all of Laravel's features.  Laravel facades serve as "stat
- **Helper Functions**: To complement facades, Laravel offers a variety of global "helper functions" that make it even easier to interact with common Laravel features. Some of the common helper functions you may interact with are view, response, url, config, and more. Each helper function offered by Laravel is documented with their corresponding feature; however, a comple

## FILESYSTEM (Laravel 11)
- **File Storage**: - Introduction - Configuration     - The Local Driver     - The Public Disk     - Driver Prerequisites     - Scoped and Read-Only Filesystems     - Amazon S3 Compatible Filesystems - Obtaining Disk Instances     - On-Demand Disks - Retrieving Files     - Downloading Files     - File URLs     - Temporary URLs     - File Metadata - Storing Files     
- **Introduction**: Laravel provides a powerful filesystem abstraction thanks to the wonderful Flysystem PHP package by Frank de Jonge. The Laravel Flysystem integration provides simple drivers for working with local filesystems, SFTP, and Amazon S3. Even better, it's amazingly simple to switch between these storage options between your local development machine and p
- **Configuration**: Laravel's filesystem configuration file is located at config/filesystems.php. Within this file, you may configure all of your filesystem "disks". Each disk represents a particular storage driver and storage location. Example configurations for each supported driver are included in the configuration file so you can modify the configuration to reflec

## FOLIO (Laravel 11)
- **Laravel Folio**: - Introduction - Installation     - Page Paths / URIs     - Subdomain Routing - Creating Routes     - Nested Routes     - Index Routes - Route Parameters - Route Model Binding     - Soft Deleted Models - Render Hooks - Named Routes - Middleware - Route Caching  <a name="introduction"></a>
- **Introduction**: Laravel Folio is a powerful page based router designed to simplify routing in Laravel applications. With Laravel Folio, generating a route becomes as effortless as creating a Blade template within your application's resources/views/pages directory.  For example, to create a page that is accessible at the /greeting URL, just create a greeting.blade.
- **Installation**: To get started, install Folio into your project using the Composer package manager:  After installing Folio, you may execute the folio:install Artisan command, which will install Folio's service provider into your application. This service provider registers the directory where Folio will search for routes / pages:  <a name="page-paths-uris"></a>

## FORTIFY (Laravel 11)
- **Laravel Fortify**: - Introduction     - What is Fortify?     - When Should I Use Fortify? - Installation     - Fortify Features     - Disabling Views - Authentication     - Customizing User Authentication     - Customizing the Authentication Pipeline     - Customizing Redirects - Two Factor Authentication     - Enabling Two Factor Authentication     - Authenticating 
- **Introduction**: Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel. Fortify registers the routes and controllers needed to implement all of Laravel's authentication features, including login, registration, password reset, email verification, and more. After installing Fortify, you may run the route:list Artisan command to see 
- **What is Fortify?**: As mentioned previously, Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel. Fortify registers the routes and controllers needed to implement all of Laravel's authentication features, including login, registration, password reset, email verification, and more.  **You are not required to use Fortify in order to 

## FRONTEND (Laravel 11)
- **Frontend**: - Introduction - Using PHP     - PHP and Blade     - Livewire     - Starter Kits - Using Vue / React     - Inertia     - Starter Kits - Bundling Assets  <a name="introduction"></a>
- **Introduction**: Laravel is a backend framework that provides all of the features you need to build modern web applications, such as routing, validation, caching, queues, file storage, and more. However, we believe it's important to offer developers a beautiful full-stack experience, including powerful approaches for building your application's frontend.  There are
- **PHP and Blade**: In the past, most PHP applications rendered HTML to the browser using simple HTML templates interspersed with PHP echo statements which render data that was retrieved from a database during the request:  In Laravel, this approach to rendering HTML can still be achieved using views and Blade. Blade is an extremely light-weight templating language th

## HASHING (Laravel 11)
- **Hashing**: - Introduction - Configuration - Basic Usage     - Hashing Passwords     - Verifying That a Password Matches a Hash     - Determining if a Password Needs to be Rehashed - Hash Algorithm Verification  <a name="introduction"></a>
- **Introduction**: The Laravel Hash facade provides secure Bcrypt and Argon2 hashing for storing user passwords. If you are using one of the Laravel application starter kits, Bcrypt will be used for registration and authentication by default.  Bcrypt is a great choice for hashing passwords because its "work factor" is adjustable, which means that the time it takes to
- **Configuration**: By default, Laravel uses the bcrypt hashing driver when hashing data. However, several other hashing drivers are supported, including argon and argon2id.  You may specify your application's hashing driver using the HASH_DRIVER environment variable. But, if you want to customize all of Laravel's hashing driver options, you should publish the complet

## HELPERS (Laravel 11)
- **Helpers**: - Introduction - Available Methods - Other Utilities     - Benchmarking     - Dates     - Deferred Functions     - Lottery     - Pipeline     - Sleep     - Timebox  <a name="introduction"></a>
- **Introduction**: Laravel includes a variety of global "helper" PHP functions. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.  <a name="available-methods"></a>
- **Available Methods**: <style>     .collection-method-list > p {         columns: 10.8em 3; -moz-columns: 10.8em 3; -webkit-columns: 10.8em 3;     }      .collection-method-list a {         display: block;         overflow: hidden;         text-overflow: ellipsis;         white-space: nowrap;     } </style>  <a name="arrays-and-objects-method-list"></a>

## HOMESTEAD (Laravel 11)
- **Laravel Homestead**: - Introduction - Installation and Setup     - First Steps     - Configuring Homestead     - Configuring Nginx Sites     - Configuring Services     - Launching the Vagrant Box     - Per Project Installation     - Installing Optional Features     - Aliases - Updating Homestead - Daily Usage     - Connecting via SSH     - Adding Additional Sites     -
- **Introduction**: Laravel strives to make the entire PHP development experience delightful, including your local development environment. Laravel Homestead is an official, pre-packaged Vagrant box that provides you a wonderful development environment without requiring you to install PHP, a web server, or any other server software on your local machine.  Vagrant prov
- **Included Software**: <style>     #software-list > ul {         column-count: 2; -moz-column-count: 2; -webkit-column-count: 2;         column-gap: 5em; -moz-column-gap: 5em; -webkit-column-gap: 5em;         line-height: 1.9;     } </style>  <div id="software-list" markdown="1">  - Ubuntu 22.04 - Git - PHP 8.3 - PHP 8.2 - PHP 8.1 - PHP 8.0 - PHP 7.4 - PHP 7.3 - PHP 7.2 

## HORIZON (Laravel 11)
- **Laravel Horizon**: - Introduction - Installation     - Configuration     - Balancing Strategies     - Dashboard Authorization     - Silenced Jobs - Upgrading Horizon - Running Horizon     - Deploying Horizon - Tags - Notifications - Metrics - Deleting Failed Jobs - Clearing Jobs From Queues  <a name="introduction"></a>
- **Introduction**: > [!NOTE]   > Before digging into Laravel Horizon, you should familiarize yourself with Laravel's base queue services. Horizon augments Laravel's queue with additional features that may be confusing if you are not already familiar with the basic queue features offered by Laravel.  Laravel Horizon provides a beautiful dashboard and code-driven confi
- **Installation**: > [!WARNING]   > Laravel Horizon requires that you use Redis to power your queue. Therefore, you should ensure that your queue connection is set to redis in your application's config/queue.php configuration file.  You may install Horizon into your project using the Composer package manager:  After installing Horizon, publish its assets using the ho

## HTTP-CLIENT (Laravel 11)
- **HTTP Client**: - Introduction - Making Requests     - Request Data     - Headers     - Authentication     - Timeout     - Retries     - Error Handling     - Guzzle Middleware     - Guzzle Options - Concurrent Requests - Macros - Testing     - Faking Responses     - Inspecting Requests     - Preventing Stray Requests - Events  <a name="introduction"></a>
- **Introduction**: Laravel provides an expressive, minimal API around the Guzzle HTTP client, allowing you to quickly make outgoing HTTP requests to communicate with other web applications. Laravel's wrapper around Guzzle is focused on its most common use cases and a wonderful developer experience.  <a name="making-requests"></a>
- **Making Requests**: To make requests, you may use the head, get, post, put, patch, and delete methods provided by the Http facade. First, let's examine how to make a basic GET request to another URL:      use Illuminate\Support\Facades\Http;      $response = Http::get('http://example.com');  The get method returns an instance of Illuminate\Http\Client\Response, which 

## HTTP-TESTS (Laravel 11)
- **HTTP Tests**: - Introduction - Making Requests     - Customizing Request Headers     - Cookies     - Session / Authentication     - Debugging Responses     - Exception Handling - Testing JSON APIs     - Fluent JSON Testing - Testing File Uploads - Testing Views     - Rendering Blade and Components - Available Assertions     - Response Assertions     - Authentica
- **Introduction**: Laravel provides a very fluent API for making HTTP requests to your application and examining the responses. For example, take a look at the feature test defined below:  The get method makes a GET request into the application, while the assertStatus method asserts that the returned response should have the given HTTP status code. In addition to thi
- **Making Requests**: To make a request to your application, you may invoke the get, post, put, patch, or delete methods within your test. These methods do not actually issue a "real" HTTP request to your application. Instead, the entire network request is simulated internally.  Instead of returning an Illuminate\Http\Response instance, test request methods return an in

## INSTALLATION (Laravel 11)
- **Installation**: - Meet Laravel     - Why Laravel? - Creating a Laravel Application     - Installing PHP and the Laravel Installer     - Creating an Application - Initial Configuration     - Environment Based Configuration     - Databases and Migrations     - Directory Configuration - Local Installation Using Herd     - Herd on macOS     - Herd on Windows - Docker 
- **Meet Laravel**: Laravel is a web application framework with expressive, elegant syntax. A web framework provides a structure and starting point for creating your application, allowing you to focus on creating something amazing while we sweat the details.  Laravel strives to provide an amazing developer experience while providing powerful features such as thorough 
- **Why Laravel?**: There are a variety of tools and frameworks available to you when building a web application. However, we believe Laravel is the best choice for building modern, full-stack web applications.

## LIFECYCLE (Laravel 11)
- **Request Lifecycle**: - Introduction - Lifecycle Overview     - First Steps     - HTTP / Console Kernels     - Service Providers     - Routing     - Finishing Up - Focus on Service Providers  <a name="introduction"></a>
- **Introduction**: When using any tool in the "real world", you feel more confident if you understand how that tool works. Application development is no different. When you understand how your development tools function, you feel more comfortable and confident using them.  The goal of this document is to give you a good, high-level overview of how the Laravel framewo
- **First Steps**: The entry point for all requests to a Laravel application is the public/index.php file. All requests are directed to this file by your web server (Apache / Nginx) configuration. The index.php file doesn't contain much code. Rather, it is a starting point for loading the rest of the framework.  The index.php file loads the Composer generated autoloa

## LOCALIZATION (Laravel 11)
- **Localization**: - Introduction     - Publishing the Language Files     - Configuring the Locale     - Pluralization Language - Defining Translation Strings     - Using Short Keys     - Using Translation Strings as Keys - Retrieving Translation Strings     - Replacing Parameters in Translation Strings     - Pluralization - Overriding Package Language Files  <a name
- **Introduction**: > [!NOTE]   > By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files, you may publish them via the lang:publish Artisan command.  Laravel's localization features provide a convenient way to retrieve strings in various languages, allowing you to easily support multipl
- **Publishing the Language Files**: By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files or create your own, you should scaffold the lang directory via the lang:publish Artisan command. The lang:publish command will create the lang directory in your application and publish the default set of language

## LOGGING (Laravel 11)
- **Logging**: - Introduction - Configuration     - Available Channel Drivers     - Channel Prerequisites     - Logging Deprecation Warnings - Building Log Stacks - Writing Log Messages     - Contextual Information     - Writing to Specific Channels - Monolog Channel Customization     - Customizing Monolog for Channels     - Creating Monolog Handler Channels     
- **Introduction**: To help you learn more about what's happening within your application, Laravel provides robust logging services that allow you to log messages to files, the system error log, and even to Slack to notify your entire team.  Laravel logging is based on "channels". Each channel represents a specific way of writing log information. For example, the sing
- **Configuration**: All of the configuration options that control your application's logging behavior are housed in the config/logging.php configuration file. This file allows you to configure your application's log channels, so be sure to review each of the available channels and their options. We'll review a few common options below.  By default, Laravel will use th

## MAIL (Laravel 11)
- **Mail**: - Introduction     - Configuration     - Driver Prerequisites     - Failover Configuration     - Round Robin Configuration - Generating Mailables - Writing Mailables     - Configuring the Sender     - Configuring the View     - View Data     - Attachments     - Inline Attachments     - Attachable Objects     - Headers     - Tags and Metadata     - 
- **Introduction**: Sending email doesn't have to be complicated. Laravel provides a clean, simple email API powered by the popular Symfony Mailer component. Laravel and Symfony Mailer provide drivers for sending email via SMTP, Mailgun, Postmark, Resend, Amazon SES, and sendmail, allowing you to quickly get started sending mail through a local or cloud based service 
- **Configuration**: Laravel's email services may be configured via your application's config/mail.php configuration file. Each mailer configured within this file may have its own unique configuration and even its own unique "transport", allowing your application to use different email services to send certain email messages. For example, your application might use Pos

## MCP (Laravel 11)
- **Laravel MCP**: - Introduction - Installation     - Publishing Routes - Creating Servers     - Server Registration     - Web Servers     - Local Servers - Tools     - Creating Tools     - Tool Input Schemas     - Validating Tool Arguments     - Tool Dependency Injection     - Tool Annotations     - Conditional Tool Registration     - Tool Responses - Prompts     -
- **Introduction**: Laravel MCP provides a simple and elegant way for AI clients to interact with your Laravel application through the Model Context Protocol. It offers an expressive, fluent interface for defining servers, tools, resources, and prompts that enable AI-powered interactions with your application.  <a name="installation"></a>
- **Installation**: To get started, install Laravel MCP into your project using the Composer package manager:  <a name="publishing-routes"></a>

## MIDDLEWARE (Laravel 11)
- **Middleware**: - Introduction - Defining Middleware - Registering Middleware     - Global Middleware     - Assigning Middleware to Routes     - Middleware Groups     - Middleware Aliases     - Sorting Middleware - Middleware Parameters - Terminable Middleware  <a name="introduction"></a>
- **Introduction**: Middleware provide a convenient mechanism for inspecting and filtering HTTP requests entering your application. For example, Laravel includes a middleware that verifies the user of your application is authenticated. If the user is not authenticated, the middleware will redirect the user to your application's login screen. However, if the user is au
- **Defining Middleware**: To create a new middleware, use the make:middleware Artisan command:  This command will place a new EnsureTokenIsValid class within your app/Http/Middleware directory. In this middleware, we will only allow access to the route if the supplied token input matches a specified value. Otherwise, we will redirect the users back to the /home URI:      <?

## MIGRATIONS (Laravel 11)
- **Database: Migrations**: - Introduction - Generating Migrations     - Squashing Migrations - Migration Structure - Running Migrations     - Rolling Back Migrations - Tables     - Creating Tables     - Updating Tables     - Renaming / Dropping Tables - Columns     - Creating Columns     - Available Column Types     - Column Modifiers     - Modifying Columns     - Renaming C
- **Introduction**: Migrations are like version control for your database, allowing your team to define and share the application's database schema definition. If you have ever had to tell a teammate to manually add a column to their local database schema after pulling in your changes from source control, you've faced the problem that database migrations solve.  The L
- **Generating Migrations**: You may use the make:migration Artisan command to generate a database migration. The new migration will be placed in your database/migrations directory. Each migration filename contains a timestamp that allows Laravel to determine the order of the migrations:  Laravel will use the name of the migration to attempt to guess the name of the table and 

## MIX (Laravel 11)
- **Introduction**: Laravel Mix, a package developed by Laracasts creator Jeffrey Way, provides a fluent API for defining webpack build steps for your Laravel application using several common CSS and JavaScript pre-processors.  In other words, Mix makes it a cinch to compile and minify your application's CSS and JavaScript files. Through simple method chaining, you ca

## MOCKING (Laravel 11)
- **Mocking**: - Introduction - Mocking Objects - Mocking Facades     - Facade Spies - Interacting With Time  <a name="introduction"></a>
- **Introduction**: When testing Laravel applications, you may wish to "mock" certain aspects of your application so they are not actually executed during a given test. For example, when testing a controller that dispatches an event, you may wish to mock the event listeners so they are not actually executed during the test. This allows you to only test the controller'
- **Mocking Objects**: When mocking an object that is going to be injected into your application via Laravel's service container, you will need to bind your mocked instance into the container as an instance binding. This will instruct the container to use your mocked instance of the object instead of constructing the object itself:  In order to make this more convenient,

## MONGODB (Laravel 11)
- **MongoDB**: - Introduction - Installation     - MongoDB Driver     - Starting a MongoDB Server     - Install the Laravel MongoDB Package - Configuration - Features  <a name="introduction"></a>
- **Introduction**: MongoDB is one of the most popular NoSQL document-oriented database, used for its high write load (useful for analytics or IoT) and high availability (easy to set replica sets with automatic failover). It can also shard the database easily for horizontal scalability and has a powerful query language for doing aggregation, text search or geospatial 
- **MongoDB Driver**: To connect to a MongoDB database, the mongodb PHP extension is required. If you are developing locally using Laravel Herd or installed PHP via php.new, you already have this extension installed on your system. However, if you need to install the extension manually, you may do so via PECL:  For more information on installing the MongoDB PHP extensio

## NOTIFICATIONS (Laravel 11)
- **Notifications**: - Introduction - Generating Notifications - Sending Notifications     - Using the Notifiable Trait     - Using the Notification Facade     - Specifying Delivery Channels     - Queueing Notifications     - On-Demand Notifications - Mail Notifications     - Formatting Mail Messages     - Customizing the Sender     - Customizing the Recipient     - Cu
- **Introduction**: In addition to support for sending email, Laravel provides support for sending notifications across a variety of delivery channels, including email, SMS (via Vonage, formerly known as Nexmo), and Slack. In addition, a variety of community built notification channels have been created to send notifications over dozens of different channels! Notifica
- **Generating Notifications**: In Laravel, each notification is represented by a single class that is typically stored in the app/Notifications directory. Don't worry if you don't see this directory in your application - it will be created for you when you run the make:notification Artisan command:  This command will place a fresh notification class in your app/Notifications dir

## OCTANE (Laravel 11)
- **Laravel Octane**: - Introduction - Installation - Server Prerequisites     - FrankenPHP     - RoadRunner     - Swoole - Serving Your Application     - Serving Your Application via HTTPS     - Serving Your Application via Nginx     - Watching for File Changes     - Specifying the Worker Count     - Specifying the Max Request Count     - Reloading the Workers     - St
- **Introduction**: Laravel Octane supercharges your application's performance by serving your application using high-powered application servers, including FrankenPHP, Open Swoole, Swoole, and RoadRunner. Octane boots your application once, keeps it in memory, and then feeds it requests at supersonic speeds.  <a name="installation"></a>
- **Installation**: Octane may be installed via the Composer package manager:  After installing Octane, you may execute the octane:install Artisan command, which will install Octane's configuration file into your application:  <a name="server-prerequisites"></a>

## PACKAGES (Laravel 11)
- **Package Development**: - Introduction     - A Note on Facades - Package Discovery - Service Providers - Resources     - Configuration     - Migrations     - Routes     - Language Files     - Views     - View Components     - "About" Artisan Command - Commands     - Optimize Commands - Public Assets - Publishing File Groups  <a name="introduction"></a>
- **Introduction**: Packages are the primary way of adding functionality to Laravel. Packages might be anything from a great way to work with dates like Carbon or a package that allows you to associate files with Eloquent models like Spatie's Laravel Media Library.  There are different types of packages. Some packages are stand-alone, meaning they work with any PHP fr
- **A Note on Facades**: When writing a Laravel application, it generally does not matter if you use contracts or facades since both provide essentially equal levels of testability. However, when writing packages, your package will not typically have access to all of Laravel's testing helpers. If you would like to be able to write your package tests as if the package were 

## PAGINATION (Laravel 11)
- **Database: Pagination**: - Introduction - Basic Usage     - Paginating Query Builder Results     - Paginating Eloquent Results     - Cursor Pagination     - Manually Creating a Paginator     - Customizing Pagination URLs - Displaying Pagination Results     - Adjusting the Pagination Link Window     - Converting Results to JSON - Customizing the Pagination View     - Using 
- **Introduction**: In other frameworks, pagination can be very painful. We hope Laravel's approach to pagination will be a breath of fresh air. Laravel's paginator is integrated with the query builder and Eloquent ORM and provides convenient, easy-to-use pagination of database records with zero configuration.  By default, the HTML generated by the paginator is compat
- **Tailwind JIT**: If you are using Laravel's default Tailwind pagination views and the Tailwind JIT engine, you should ensure your application's tailwind.config.js file's content key references Laravel's pagination views so that their Tailwind classes are not purged:  <a name="basic-usage"></a>

## PASSPORT (Laravel 11)
- **Laravel Passport**: - Introduction     - Passport or Sanctum? - Installation     - Deploying Passport     - Upgrading Passport - Configuration     - Client Secret Hashing     - Token Lifetimes     - Overriding Default Models     - Overriding Routes - Issuing Access Tokens     - Managing Clients     - Requesting Tokens     - Refreshing Tokens     - Revoking Tokens     
- **Introduction**: Laravel Passport provides a full OAuth2 server implementation for your Laravel application in a matter of minutes. Passport is built on top of the League OAuth2 server that is maintained by Andy Millington and Simon Hamp.  > [!WARNING]   > This documentation assumes you are already familiar with OAuth2. If you do not know anything about OAuth2, con
- **Passport or Sanctum?**: Before getting started, you may wish to determine if your application would be better served by Laravel Passport or Laravel Sanctum. If your application absolutely needs to support OAuth2, then you should use Laravel Passport.  However, if you are attempting to authenticate a single-page application, mobile application, or issue API tokens, you sho

## PASSWORDS (Laravel 11)
- **Resetting Passwords**: - Introduction     - Model Preparation     - Database Preparation     - Configuring Trusted Hosts - Routing     - Requesting the Password Reset Link     - Resetting the Password - Deleting Expired Tokens - Customization  <a name="introduction"></a>
- **Introduction**: Most web applications provide a way for users to reset their forgotten passwords. Rather than forcing you to re-implement this by hand for every application you create, Laravel provides convenient services for sending password reset links and secure resetting passwords.  > [!NOTE]   > Want to get started fast? Install a Laravel application starter 
- **Model Preparation**: Before using the password reset features of Laravel, your application's App\Models\User model must use the Illuminate\Notifications\Notifiable trait. Typically, this trait is already included on the default App\Models\User model that is created with new Laravel applications.  Next, verify that your App\Models\User model implements the Illuminate\Co

## PENNANT (Laravel 11)
- **Laravel Pennant**: - Introduction - Installation - Configuration - Defining Features     - Class Based Features - Checking Features     - Conditional Execution     - The HasFeatures Trait     - Blade Directive     - Middleware     - Intercepting Feature Checks     - In-Memory Cache - Scope     - Specifying the Scope     - Default Scope     - Nullable Scope     - Iden
- **Introduction**: Laravel Pennant is a simple and light-weight feature flag package - without the cruft. Feature flags enable you to incrementally roll out new application features with confidence, A/B test new interface designs, complement a trunk-based development strategy, and much more.  <a name="installation"></a>
- **Installation**: First, install Pennant into your project using the Composer package manager:  Next, you should publish the Pennant configuration and migration files using the vendor:publish Artisan command:  Finally, you should run your application's database migrations. This will create a features table that Pennant uses to power its database driver:  <a name="co

## PINT (Laravel 11)
- **Laravel Pint**: - Introduction - Installation - Running Pint - Configuring Pint     - Presets     - Rules     - Excluding Files / Folders - Continuous Integration     - GitHub Actions  <a name="introduction"></a>
- **Introduction**: Laravel Pint is an opinionated PHP code style fixer for minimalists. Pint is built on top of PHP-CS-Fixer and makes it simple to ensure that your code style stays clean and consistent.  Pint is automatically installed with all new Laravel applications so you may start using it immediately. By default, Pint does not require any configuration and wil
- **Installation**: Pint is included in recent releases of the Laravel framework, so installation is typically unnecessary. However, for older applications, you may install Laravel Pint via Composer:  <a name="running-pint"></a>

## PRECOGNITION (Laravel 11)
- **Precognition**: - Introduction - Live Validation     - Using Vue     - Using Vue and Inertia     - Using React     - Using React and Inertia     - Using Alpine and Blade     - Configuring Axios - Customizing Validation Rules - Handling File Uploads - Managing Side-Effects - Testing  <a name="introduction"></a>
- **Introduction**: Laravel Precognition allows you to anticipate the outcome of a future HTTP request. One of the primary use cases of Precognition is the ability to provide "live" validation for your frontend JavaScript application without having to duplicate your application's backend validation rules. Precognition pairs especially well with Laravel's Inertia-based
- **Using Vue**: Using Laravel Precognition, you can offer live validation experiences to your users without having to duplicate your validation rules in your frontend Vue application. To illustrate how it works, let's build a form for creating new users within our application.  First, to enable Precognition for a route, the HandlePrecognitiveRequests middleware sh

## PROCESSES (Laravel 11)
- **Processes**: - Introduction - Invoking Processes     - Process Options     - Process Output     - Pipelines - Asynchronous Processes     - Process IDs and Signals     - Asynchronous Process Output - Concurrent Processes     - Naming Pool Processes     - Pool Process IDs and Signals - Testing     - Faking Processes     - Faking Specific Processes     - Faking Pr
- **Introduction**: Laravel provides an expressive, minimal API around the Symfony Process component, allowing you to conveniently invoke external processes from your Laravel application. Laravel's process features are focused on the most common use cases and a wonderful developer experience.  <a name="invoking-processes"></a>
- **Invoking Processes**: To invoke a process, you may use the run and start methods offered by the Process facade. The run method will invoke a process and wait for the process to finish executing, while the start method is used for asynchronous process execution. We'll examine both approaches within this documentation. First, let's examine how to invoke a basic, synchrono

## PROMPTS (Laravel 11)
- **Prompts**: - Introduction - Installation - Available Prompts     - Text     - Textarea     - Password     - Confirm     - Select     - Multi-select     - Suggest     - Search     - Multi-search     - Pause - Transforming Input Before Validation - Forms - Informational Messages - Tables - Spin - Progress Bar - Clearing the Terminal - Terminal Considerations - 
- **Introduction**: Laravel Prompts is a PHP package for adding beautiful and user-friendly forms to your command-line applications, with browser-like features including placeholder text and validation.  <img src="https://laravel.com/img/docs/prompts-example.png">  Laravel Prompts is perfect for accepting user input in your Artisan console commands, but it may also be
- **Installation**: Laravel Prompts is already included with the latest release of Laravel.  Laravel Prompts may also be installed in your other PHP projects by using the Composer package manager:  <a name="available-prompts"></a>

## PROVIDERS (Laravel 11)
- **Service Providers**: - Introduction - Writing Service Providers     - The Register Method     - The Boot Method - Registering Providers - Deferred Providers  <a name="introduction"></a>
- **Introduction**: Service providers are the central place of all Laravel application bootstrapping. Your own application, as well as all of Laravel's core services, are bootstrapped via service providers.  But, what do we mean by "bootstrapped"? In general, we mean **registering** things, including registering service container bindings, event listeners, middleware,
- **Writing Service Providers**: All service providers extend the Illuminate\Support\ServiceProvider class. Most service providers contain a register and a boot method. Within the register method, you should **only bind things into the service container**. You should never attempt to register any event listeners, routes, or any other piece of functionality within the register meth

## PULSE (Laravel 11)
- **Laravel Pulse**: - Introduction - Installation     - Configuration - Dashboard     - Authorization     - Customization     - Resolving Users     - Cards - Capturing Entries     - Recorders     - Filtering - Performance     - Using a Different Database     - Redis Ingest     - Sampling     - Trimming     - Handling Pulse Exceptions - Custom Cards     - Card Componen
- **Introduction**: Laravel Pulse delivers at-a-glance insights into your application's performance and usage. With Pulse, you can track down bottlenecks like slow jobs and endpoints, find your most active users, and more.  For in-depth debugging of individual events, check out Laravel Telescope.  <a name="installation"></a>
- **Installation**: > [!WARNING]   > Pulse's first-party storage implementation currently requires a MySQL, MariaDB, or PostgreSQL database. If you are using a different database engine, you will need a separate MySQL, MariaDB, or PostgreSQL database for your Pulse data.  You may install Pulse using the Composer package manager:  Next, you should publish the Pulse con

## QUERIES (Laravel 11)
- **Database: Query Builder**: - Introduction - Running Database Queries     - Chunking Results     - Streaming Results Lazily     - Aggregates - Select Statements - Raw Expressions - Joins - Unions - Basic Where Clauses     - Where Clauses     - Or Where Clauses     - Where Not Clauses     - Where Any / All / None Clauses     - JSON Where Clauses     - Additional Where Clauses 
- **Introduction**: Laravel's database query builder provides a convenient, fluent interface to creating and running database queries. It can be used to perform most database operations in your application and works perfectly with all of Laravel's supported database systems.  The Laravel query builder uses PDO parameter binding to protect your application against SQL 
- **Retrieving All Rows From a Table**: You may use the table method provided by the DB facade to begin a query. The table method returns a fluent query builder instance for the given table, allowing you to chain more constraints onto the query and then finally retrieve the results of the query using the get method:      <?php      namespace App\Http\Controllers;      use Illuminate\Supp

## QUEUES (Laravel 11)
- **Queues**: - Introduction     - Connections vs. Queues     - Driver Notes and Prerequisites - Creating Jobs     - Generating Job Classes     - Class Structure     - Unique Jobs     - Encrypted Jobs - Job Middleware     - Rate Limiting     - Preventing Job Overlaps     - Throttling Exceptions     - Skipping Jobs - Dispatching Jobs     - Delayed Dispatching    
- **Introduction**: While building your web application, you may have some tasks, such as parsing and storing an uploaded CSV file, that take too long to perform during a typical web request. Thankfully, Laravel allows you to easily create queued jobs that may be processed in the background. By moving time intensive tasks to a queue, your application can respond to we
- **Connections vs. Queues**: Before getting started with Laravel queues, it is important to understand the distinction between "connections" and "queues". In your config/queue.php configuration file, there is a connections configuration array. This option defines the connections to backend queue services such as Amazon SQS, Beanstalk, or Redis. However, any given queue connect

## RATE-LIMITING (Laravel 11)
- **Rate Limiting**: - Introduction     - Cache Configuration - Basic Usage     - Manually Incrementing Attempts     - Clearing Attempts  <a name="introduction"></a>
- **Introduction**: Laravel includes a simple to use rate limiting abstraction which, in conjunction with your application's cache, provides an easy way to limit any action during a specified window of time.  > [!NOTE]   > If you are interested in rate limiting incoming HTTP requests, please consult the rate limiter middleware documentation.  <a name="cache-configurat
- **Cache Configuration**: Typically, the rate limiter utilizes your default application cache as defined by the default key within your application's cache configuration file. However, you may specify which cache driver the rate limiter should use by defining a limiter key within your application's cache configuration file:      'default' => env('CACHE_STORE', 'database'), 

## REDIRECTS (Laravel 11)
- **HTTP Redirects**: - Creating Redirects - Redirecting To Named Routes - Redirecting To Controller Actions - Redirecting With Flashed Session Data  <a name="creating-redirects"></a>
- **Creating Redirects**: Redirect responses are instances of the Illuminate\Http\RedirectResponse class, and contain the proper headers needed to redirect the user to another URL. There are several ways to generate a RedirectResponse instance. The simplest method is to use the global redirect helper:      Route::get('/dashboard', function () {         return redirect('/hom
- **Redirecting To Named Routes**: When you call the redirect helper with no parameters, an instance of Illuminate\Routing\Redirector is returned, allowing you to call any method on the Redirector instance. For example, to generate a RedirectResponse to a named route, you may use the route method:      return redirect()->route('login');  If your route has parameters, you may pass th

## REDIS (Laravel 11)
- **Redis**: - Introduction - Configuration     - Clusters     - Predis     - PhpRedis - Interacting With Redis     - Transactions     - Pipelining Commands - Pub / Sub  <a name="introduction"></a>
- **Introduction**: Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, and sorted sets.  Before using Redis with Laravel, we encourage you to install and use the PhpRedis PHP extension via PECL. The extension is more complex to install compared to "user-land" PHP pa
- **Configuration**: You may configure your application's Redis settings via the config/database.php configuration file. Within this file, you will see a redis array containing the Redis servers utilized by your application:      'redis' => [          'client' => env('REDIS_CLIENT', 'phpredis'),          'options' => [             'cluster' => env('REDIS_CLUSTER', 'red

## RELEASES (Laravel 11)
- **Release Notes**: - Versioning Scheme - Support Policy - Laravel 11  <a name="versioning-scheme"></a>
- **Versioning Scheme**: Laravel and its other first-party packages follow Semantic Versioning. Major framework releases are released every year (~Q1), while minor and patch releases may be released as often as every week. Minor and patch releases should **never** contain breaking changes.  When referencing the Laravel framework or its components from your application or p
- **Named Arguments**: Named arguments are not covered by Laravel's backwards compatibility guidelines. We may choose to rename function arguments when necessary in order to improve the Laravel codebase. Therefore, using named arguments when calling Laravel methods should be done cautiously and with the understanding that the parameter names may change in the future.  <a

## REQUESTS (Laravel 11)
- **HTTP Requests**: - Introduction - Interacting With The Request     - Accessing the Request     - Request Path, Host, and Method     - Request Headers     - Request IP Address     - Content Negotiation     - PSR-7 Requests - Input     - Retrieving Input     - Input Presence     - Merging Additional Input     - Old Input     - Cookies     - Input Trimming and Normali
- **Introduction**: Laravel's Illuminate\Http\Request class provides an object-oriented way to interact with the current HTTP request being handled by your application as well as retrieve the input, cookies, and files that were submitted with the request.  <a name="interacting-with-the-request"></a>
- **Accessing the Request**: To obtain an instance of the current HTTP request via dependency injection, you should type-hint the Illuminate\Http\Request class on your route closure or controller method. The incoming request instance will automatically be injected by the Laravel service container:      <?php      namespace App\Http\Controllers;      use Illuminate\Http\Redirec

## RESPONSES (Laravel 11)
- **HTTP Responses**: - Creating Responses     - Attaching Headers to Responses     - Attaching Cookies to Responses     - Cookies and Encryption - Redirects     - Redirecting to Named Routes     - Redirecting to Controller Actions     - Redirecting to External Domains     - Redirecting With Flashed Session Data - Other Response Types     - View Responses     - JSON Res
- **Strings and Arrays**: All routes and controllers should return a response to be sent back to the user's browser. Laravel provides several different ways to return responses. The most basic response is returning a string from a route or controller. The framework will automatically convert the string into a full HTTP response:      Route::get('/', function () {         re
- **Response Objects**: Typically, you won't just be returning simple strings or arrays from your route actions. Instead, you will be returning full Illuminate\Http\Response instances or views.  Returning a full Response instance allows you to customize the response's HTTP status code and headers. A Response instance inherits from the Symfony\Component\HttpFoundation\Resp

## REVERB (Laravel 11)
- **Laravel Reverb**: - Introduction - Installation - Configuration     - Application Credentials     - Allowed Origins     - Additional Applications     - SSL - Running the Server     - Debugging     - Restarting - Monitoring - Running Reverb in Production     - Open Files     - Event Loop     - Web Server     - Ports     - Process Management     - Scaling  <a name="in
- **Introduction**: Laravel Reverb brings blazing-fast and scalable real-time WebSocket communication directly to your Laravel application, and provides seamless integration with Laravel’s existing suite of event broadcasting tools.  <a name="installation"></a>
- **Installation**: You may install Reverb using the install:broadcasting Artisan command:  <a name="configuration"></a>

## ROUTING (Laravel 11)
- **Routing**: - Basic Routing     - The Default Route Files     - Redirect Routes     - View Routes     - Listing Your Routes     - Routing Customization - Route Parameters     - Required Parameters     - Optional Parameters     - Regular Expression Constraints - Named Routes - Route Groups     - Middleware     - Controllers     - Subdomain Routing     - Route P
- **Basic Routing**: The most basic Laravel routes accept a URI and a closure, providing a very simple and expressive method of defining routes and behavior without complicated routing configuration files:      use Illuminate\Support\Facades\Route;      Route::get('/greeting', function () {         return 'Hello World';     });  <a name="the-default-route-files"></a>
- **The Default Route Files**: All Laravel routes are defined in your route files, which are located in the routes directory. These files are automatically loaded by Laravel using the configuration specified in your application's bootstrap/app.php file. The routes/web.php file defines routes that are for your web interface. These routes are assigned the web middleware group, whi

## SAIL (Laravel 11)
- **Laravel Sail**: - Introduction - Installation and Setup     - Installing Sail Into Existing Applications     - Rebuilding Sail Images     - Configuring A Shell Alias - Starting and Stopping Sail - Executing Commands     - Executing PHP Commands     - Executing Composer Commands     - Executing Artisan Commands     - Executing Node / NPM Commands - Interacting With
- **Introduction**: Laravel Sail is a light-weight command-line interface for interacting with Laravel's default Docker development environment. Sail provides a great starting point for building a Laravel application using PHP, MySQL, and Redis without requiring prior Docker experience.  At its heart, Sail is the docker-compose.yml file and the sail script that is sto
- **Installation and Setup**: Laravel Sail is automatically installed with all new Laravel applications so you may start using it immediately. To learn how to create a new Laravel application, please consult Laravel's installation documentation for your operating system. During installation, you will be asked to choose which Sail supported services your application will be inte

## SANCTUM (Laravel 11)
- **Laravel Sanctum**: - Introduction     - How it Works - Installation - Configuration     - Overriding Default Models - API Token Authentication     - Issuing API Tokens     - Token Abilities     - Protecting Routes     - Revoking Tokens     - Token Expiration - SPA Authentication     - Configuration     - Authenticating     - Protecting Routes     - Authorizing Privat
- **Introduction**: Laravel Sanctum provides a featherweight authentication system for SPAs (single page applications), mobile applications, and simple, token based APIs. Sanctum allows each user of your application to generate multiple API tokens for their account. These tokens may be granted abilities / scopes which specify which actions the tokens are allowed to pe
- **How it Works**: Laravel Sanctum exists to solve two separate problems. Let's discuss each before digging deeper into the library.  <a name="how-it-works-api-tokens"></a>

## SCHEDULING (Laravel 11)
- **Task Scheduling**: - Introduction - Defining Schedules     - Scheduling Artisan Commands     - Scheduling Queued Jobs     - Scheduling Shell Commands     - Schedule Frequency Options     - Timezones     - Preventing Task Overlaps     - Running Tasks on One Server     - Background Tasks     - Maintenance Mode     - Schedule Groups - Running the Scheduler     - Sub-Min
- **Introduction**: In the past, you may have written a cron configuration entry for each task you needed to schedule on your server. However, this can quickly become a pain because your task schedule is no longer in source control and you must SSH into your server to view your existing cron entries or add additional entries.  Laravel's command scheduler offers a fres
- **Defining Schedules**: You may define all of your scheduled tasks in your application's routes/console.php file. To get started, let's take a look at an example. In this example, we will schedule a closure to be called every day at midnight. Within the closure we will execute a database query to clear a table:      <?php      use Illuminate\Support\Facades\DB;     use Il

## SCOUT (Laravel 11)
- **Laravel Scout**: - Introduction - Installation     - Queueing - Driver Prerequisites     - Algolia     - Meilisearch     - Typesense - Configuration     - Configuring Model Indexes     - Configuring Searchable Data     - Configuring the Model ID     - Configuring Search Engines per Model     - Identifying Users - Database / Collection Engines     - Database Engine 
- **Introduction**: Laravel Scout provides a simple, driver based solution for adding full-text search to your Eloquent models. Using model observers, Scout will automatically keep your search indexes in sync with your Eloquent records.  Currently, Scout ships with Algolia, Meilisearch, Typesense, and MySQL / PostgreSQL (database) drivers. In addition, Scout includes 
- **Installation**: First, install Scout via the Composer package manager:  After installing Scout, you should publish the Scout configuration file using the vendor:publish Artisan command. This command will publish the scout.php configuration file to your application's config directory:  Finally, add the Laravel\Scout\Searchable trait to the model you would like to m

## SEEDING (Laravel 11)
- **Database: Seeding**: - Introduction - Writing Seeders     - Using Model Factories     - Calling Additional Seeders     - Muting Model Events - Running Seeders  <a name="introduction"></a>
- **Introduction**: Laravel includes the ability to seed your database with data using seed classes. All seed classes are stored in the database/seeders directory. By default, a DatabaseSeeder class is defined for you. From this class, you may use the call method to run other seed classes, allowing you to control the seeding order.  > [!NOTE]   > Mass assignment prote
- **Writing Seeders**: To generate a seeder, execute the make:seeder Artisan command. All seeders generated by the framework will be placed in the database/seeders directory:  A seeder class only contains one method by default: run. This method is called when the db:seed Artisan command is executed. Within the run method, you may insert data into your database however yo

## SESSION (Laravel 11)
- **HTTP Session**: - Introduction     - Configuration     - Driver Prerequisites - Interacting With the Session     - Retrieving Data     - Storing Data     - Flash Data     - Deleting Data     - Regenerating the Session ID - Session Blocking - Adding Custom Session Drivers     - Implementing the Driver     - Registering the Driver  <a name="introduction"></a>
- **Introduction**: Since HTTP driven applications are stateless, sessions provide a way to store information about the user across multiple requests. That user information is typically placed in a persistent store / backend that can be accessed from subsequent requests.  Laravel ships with a variety of session backends that are accessed through an expressive, unified
- **Configuration**: Your application's session configuration file is stored at config/session.php. Be sure to review the options available to you in this file. By default, Laravel is configured to use the database session driver.  The session driver configuration option defines where session data will be stored for each request. Laravel includes a variety of drivers: 

## SOCIALITE (Laravel 11)
- **Laravel Socialite**: - Introduction - Installation - Upgrading Socialite - Configuration - Authentication     - Routing     - Authentication and Storage     - Access Scopes     - Slack Bot Scopes     - Optional Parameters - Retrieving User Details  <a name="introduction"></a>
- **Introduction**: In addition to typical, form based authentication, Laravel also provides a simple, convenient way to authenticate with OAuth providers using Laravel Socialite. Socialite currently supports authentication via Facebook, X, LinkedIn, Google, GitHub, GitLab, Bitbucket, and Slack.  > [!NOTE]   > Adapters for other platforms are available via the communi
- **Installation**: To get started with Socialite, use the Composer package manager to add the package to your project's dependencies:  <a name="upgrading-socialite"></a>

## STARTER-KITS (Laravel 11)
- **Starter Kits**: - Introduction - Laravel Breeze     - Installation     - Breeze and Blade     - Breeze and Livewire     - Breeze and React / Vue     - Breeze and Next.js / API - Laravel Jetstream  <a name="introduction"></a>
- **Introduction**: To give you a head start building your new Laravel application, we are happy to offer authentication and application starter kits. These kits automatically scaffold your application with the routes, controllers, and views you need to register and authenticate your application's users.  While you are welcome to use these starter kits, they are not r
- **Laravel Breeze**: Laravel Breeze is a minimal, simple implementation of all of Laravel's authentication features, including login, registration, password reset, email verification, and password confirmation. In addition, Breeze includes a simple "profile" page where the user may update their name, email address, and password.  Laravel Breeze's default view layer is 

## STRINGS (Laravel 11)
- **Introduction**: Laravel includes a variety of functions for manipulating string values. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.  <a name="available-methods"></a>
- **Available Methods**: <style>     .collection-method-list > p {         columns: 10.8em 3; -moz-columns: 10.8em 3; -webkit-columns: 10.8em 3;     }      .collection-method-list a {         display: block;         overflow: hidden;         text-overflow: ellipsis;         white-space: nowrap;     } </style>  <a name="strings-method-list"></a>
- **Strings**: <div class="collection-method-list" markdown="1">  \__ class_basename e preg_replace_array Str::after Str::afterLast Str::apa Str::ascii Str::before Str::beforeLast Str::between Str::betweenFirst Str::camel Str::charAt Str::chopStart Str::chopEnd Str::contains Str::containsAll Str::doesntContain Str::deduplicate Str::endsWith Str::excerpt Str::fini

## STRUCTURE (Laravel 11)
- **Directory Structure**: - Introduction - The Root Directory     - The app Directory     - The bootstrap Directory     - The config Directory     - The database Directory     - The public Directory     - The resources Directory     - The routes Directory     - The storage Directory     - The tests Directory     - The vendor Directory - The App Directory     - The Broadcast
- **Introduction**: The default Laravel application structure is intended to provide a great starting point for both large and small applications. But you are free to organize your application however you like. Laravel imposes almost no restrictions on where any given class is located - as long as Composer can autoload the class.  > [!NOTE]   > New to Laravel? Check o
- **The App Directory**: The app directory contains the core code of your application. We'll explore this directory in more detail soon; however, almost all of the classes in your application will be in this directory.  <a name="the-bootstrap-directory"></a>

## TELESCOPE (Laravel 11)
- **Laravel Telescope**: - Introduction - Installation     - Local Only Installation     - Configuration     - Data Pruning     - Dashboard Authorization - Upgrading Telescope - Filtering     - Entries     - Batches - Tagging - Available Watchers     - Batch Watcher     - Cache Watcher     - Command Watcher     - Dump Watcher     - Event Watcher     - Exception Watcher    
- **Introduction**: Laravel Telescope makes a wonderful companion to your local Laravel development environment. Telescope provides insight into the requests coming into your application, exceptions, log entries, database queries, queued jobs, mail, notifications, cache operations, scheduled tasks, variable dumps, and more.  <img src="https://laravel.com/img/docs/tele
- **Installation**: You may use the Composer package manager to install Telescope into your Laravel project:  After installing Telescope, publish its assets and migrations using the telescope:install Artisan command. After installing Telescope, you should also run the migrate command in order to create the tables needed to store Telescope's data:  Finally, you may acc

## TESTING (Laravel 11)
- **Testing: Getting Started**: - Introduction - Environment - Creating Tests - Running Tests     - Running Tests in Parallel     - Reporting Test Coverage     - Profiling Tests  <a name="introduction"></a>
- **Introduction**: Laravel is built with testing in mind. In fact, support for testing with Pest and PHPUnit is included out of the box and a phpunit.xml file is already set up for your application. The framework also ships with convenient helper methods that allow you to expressively test your applications.  By default, your application's tests directory contains tw
- **Environment**: When running tests, Laravel will automatically set the configuration environment to testing because of the environment variables defined in the phpunit.xml file. Laravel also automatically configures the session and cache to the array driver so that no session or cache data will be persisted while testing.  You are free to define other testing envi

## UPGRADE (Laravel 11)
- **High Impact Changes**: <div class="content-list" markdown="1">  - Updating Dependencies - Application Structure - Floating-Point Types - Modifying Columns - SQLite Minimum Version - Updating Sanctum  </div>  <a name="medium-impact-changes"></a>
- **Medium Impact Changes**: <div class="content-list" markdown="1">  - Carbon 3 - Password Rehashing - Per-Second Rate Limiting - Spatie Once Package  </div>  <a name="low-impact-changes"></a>
- **Low Impact Changes**: <div class="content-list" markdown="1">  - Doctrine DBAL Removal - Eloquent Model casts Method - Spatial Types - The Enumerable Contract - The UserProvider Contract - The Authenticatable Contract  </div>  <a name="upgrade-11.0"></a>

## URLS (Laravel 11)
- **URL Generation**: - Introduction - The Basics     - Generating URLs     - Accessing the Current URL - URLs for Named Routes     - Signed URLs - URLs for Controller Actions - Default Values  <a name="introduction"></a>
- **Introduction**: Laravel provides several helpers to assist you in generating URLs for your application. These helpers are primarily helpful when building links in your templates and API responses, or when generating redirect responses to another part of your application.  <a name="the-basics"></a>
- **Generating URLs**: The url helper may be used to generate arbitrary URLs for your application. The generated URL will automatically use the scheme (HTTP or HTTPS) and host from the current request being handled by the application:      $post = App\Models\Post::find(1);      echo url("/posts/{$post->id}");      // http://example.com/posts/1  To generate a URL with que

## VALET (Laravel 11)
- **Laravel Valet**: - Introduction - Installation     - Upgrading Valet - Serving Sites     - The "Park" Command     - The "Link" Command     - Securing Sites With TLS     - Serving a Default Site     - Per-Site PHP Versions - Sharing Sites     - Sharing Sites on Your Local Network - Site Specific Environment Variables - Proxying Services - Custom Valet Drivers     - 
- **Introduction**: > [!NOTE]   > Looking for an even easier way to develop Laravel applications on macOS or Windows? Check out Laravel Herd. Herd includes everything you need to get started with Laravel development, including Valet, PHP, and Composer.  Laravel Valet is a development environment for macOS minimalists. Laravel Valet configures your Mac to always run Ng
- **Installation**: > [!WARNING]   > Valet requires macOS and Homebrew. Before installation, you should make sure that no other programs such as Apache or Nginx are binding to your local machine's port 80.  To get started, you first need to ensure that Homebrew is up to date using the update command:  Next, you should use Homebrew to install PHP:  After installing PHP

## VALIDATION (Laravel 11)
- **Validation**: - Introduction - Validation Quickstart     - Defining the Routes     - Creating the Controller     - Writing the Validation Logic     - Displaying the Validation Errors     - Repopulating Forms     - A Note on Optional Fields     - Validation Error Response Format - Form Request Validation     - Creating Form Requests     - Authorizing Form Request
- **Introduction**: Laravel provides several different approaches to validate your application's incoming data. It is most common to use the validate method available on all incoming HTTP requests. However, we will discuss other approaches to validation as well.  Laravel includes a wide variety of convenient validation rules that you may apply to data, even providing 
- **Validation Quickstart**: To learn about Laravel's powerful validation features, let's look at a complete example of validating a form and displaying the error messages back to the user. By reading this high-level overview, you'll be able to gain a good general understanding of how to validate incoming request data using Laravel:  <a name="quick-defining-the-routes"></a>

## VERIFICATION (Laravel 11)
- **Email Verification**: - Introduction     - Model Preparation     - Database Preparation - Routing     - The Email Verification Notice     - The Email Verification Handler     - Resending the Verification Email     - Protecting Routes - Customization - Events  <a name="introduction"></a>
- **Introduction**: Many web applications require users to verify their email addresses before using the application. Rather than forcing you to re-implement this feature by hand for each application you create, Laravel provides convenient built-in services for sending and verifying email verification requests.  > [!NOTE]   > Want to get started fast? Install one of t
- **Model Preparation**: Before getting started, verify that your App\Models\User model implements the Illuminate\Contracts\Auth\MustVerifyEmail contract:      <?php      namespace App\Models;      use Illuminate\Contracts\Auth\MustVerifyEmail;     use Illuminate\Foundation\Auth\User as Authenticatable;     use Illuminate\Notifications\Notifiable;      class User extends A

## VIEWS (Laravel 11)
- **Views**: - Introduction     - Writing Views in React / Vue - Creating and Rendering Views     - Nested View Directories     - Creating the First Available View     - Determining if a View Exists - Passing Data to Views     - Sharing Data With All Views - View Composers     - View Creators - Optimizing Views  <a name="introduction"></a>
- **Introduction**: Of course, it's not practical to return entire HTML documents strings directly from your routes and controllers. Thankfully, views provide a convenient way to place all of our HTML in separate files.  Views separate your controller / application logic from your presentation logic and are stored in the resources/views directory. When using Laravel, 
- **Writing Views in React / Vue**: Instead of writing their frontend templates in PHP via Blade, many developers have begun to prefer to write their templates using React or Vue. Laravel makes this painless thanks to Inertia, a library that makes it a cinch to tie your React / Vue frontend to your Laravel backend without the typical complexities of building an SPA.  Our Breeze and J

## VITE (Laravel 11)
- **Asset Bundling (Vite)**: - Introduction - Installation & Setup   - Installing Node   - Installing Vite and the Laravel Plugin   - Configuring Vite   - Loading Your Scripts and Styles - Running Vite - Working With JavaScript   - Aliases   - Vue   - React   - Inertia   - URL Processing - Working With Stylesheets - Working With Blade and Routes   - Processing Static Assets Wi
- **Introduction**: Vite is a modern frontend build tool that provides an extremely fast development environment and bundles your code for production. When building applications with Laravel, you will typically use Vite to bundle your application's CSS and JavaScript files into production ready assets.  Laravel integrates seamlessly with Vite by providing an official 
- **Choosing Between Vite and Laravel Mix**: Before transitioning to Vite, new Laravel applications utilized Mix, which is powered by webpack, when bundling assets. Vite focuses on providing a faster and more productive experience when building rich JavaScript applications. If you are developing a Single Page Application (SPA), including those developed with tools like Inertia, Vite will be t

# Laravel 12


## AI-SDK (Laravel 12)
- **Laravel AI SDK**: - Introduction - Installation     - Configuration     - Custom Base URLs     - Provider Support - Agents     - Prompting     - Conversation Context     - Structured Output     - Attachments     - Streaming     - Broadcasting     - Queueing     - Tools     - Provider Tools     - Middleware     - Anonymous Agents     - Agent Configuration     - Provi
- **Introduction**: The Laravel AI SDK provides a unified, expressive API for interacting with AI providers such as OpenAI, Anthropic, Gemini, and more. With the AI SDK, you can build intelligent agents with tools and structured output, generate images, synthesize and transcribe audio, create vector embeddings, and much more — all using a consistent, Laravel-friendly 
- **Installation**: You can install the Laravel AI SDK via Composer:  Next, you should publish the AI SDK configuration and migration files using the vendor:publish Artisan command:  Finally, you should run your application's database migrations. This will create a agent_conversations and agent_conversation_messages table that the AI SDK uses to power its conversation

## AI (Laravel 12)
- **AI Assisted Development**: - Introduction      - Why Laravel for AI Development?  - Laravel Boost      - Installation      - Available Tools      - AI Guidelines      - Agent Skills      - Documentation Search      - Agents Integration  <a name="introduction"></a>
- **Introduction**: Laravel is uniquely positioned to be the best framework for AI assisted and agentic development. The rise of AI coding agents like Claude Code, OpenCode, Cursor, and GitHub Copilot has transformed how developers write code. These tools can generate entire features, debug complex issues, and refactor code at unprecedented speed - but their effective
- **Why Laravel for AI Development?**: Laravel's opinionated conventions and well-defined structure make it an ideal framework for AI assisted development. When you ask an AI agent to add a controller, it knows exactly where to place it. When you need a new migration, the naming conventions and file locations are predictable. This consistency eliminates the guesswork that often trips up

## ARTISAN (Laravel 12)
- **Artisan Console**: - Introduction     - Tinker (REPL) - Writing Commands     - Generating Commands     - Command Structure     - Closure Commands     - Isolatable Commands - Defining Input Expectations     - Arguments     - Options     - Input Arrays     - Input Descriptions     - Prompting for Missing Input - Command I/O     - Retrieving Input     - Prompting for In
- **Introduction**: Artisan is the command line interface included with Laravel. Artisan exists at the root of your application as the artisan script and provides a number of helpful commands that can assist you while you build your application. To view a list of all available Artisan commands, you may use the list command:  Every command also includes a "help" screen
- **Laravel Sail**: If you are using Laravel Sail as your local development environment, remember to use the sail command line to invoke Artisan commands. Sail will execute your Artisan commands within your application's Docker containers:  <a name="tinker"></a>

## AUTHENTICATION (Laravel 12)
- **Authentication**: - Introduction     - Starter Kits     - Database Considerations     - Ecosystem Overview - Authentication Quickstart     - Install a Starter Kit     - Retrieving the Authenticated User     - Protecting Routes     - Login Throttling - Manually Authenticating Users     - Remembering Users     - Other Authentication Methods - HTTP Basic Authentication
- **Introduction**: Many web applications provide a way for their users to authenticate with the application and "login". Implementing this feature in web applications can be a complex and potentially risky endeavor. For this reason, Laravel strives to give you the tools you need to implement authentication quickly, securely, and easily.  At its core, Laravel's authen
- **Starter Kits**: Want to get started fast? Install a Laravel application starter kit in a fresh Laravel application. After migrating your database, navigate your browser to /register or any other URL that is assigned to your application. The starter kits will take care of scaffolding your entire authentication system!  **Even if you choose not to use a starter kit 

## AUTHORIZATION (Laravel 12)
- **Authorization**: - Introduction - Gates     - Writing Gates     - Authorizing Actions     - Gate Responses     - Intercepting Gate Checks     - Inline Authorization - Creating Policies     - Generating Policies     - Registering Policies - Writing Policies     - Policy Methods     - Policy Responses     - Methods Without Models     - Guest Users     - Policy Filter
- **Introduction**: In addition to providing built-in authentication services, Laravel also provides a simple way to authorize user actions against a given resource. For example, even though a user is authenticated, they may not be authorized to update or delete certain Eloquent models or database records managed by your application. Laravel's authorization features p
- **Writing Gates**: > [!WARNING] > Gates are a great way to learn the basics of Laravel's authorization features; however, when building robust Laravel applications you should consider using policies to organize your authorization rules.  Gates are simply closures that determine if a user is authorized to perform a given action. Typically, gates are defined within the

## BILLING (Laravel 12)
- **Laravel Cashier (Stripe)**: - Introduction - Upgrading Cashier - Installation - Configuration     - Billable Model     - API Keys     - Currency Configuration     - Tax Configuration     - Logging     - Using Custom Models - Quickstart     - Selling Products     - Selling Subscriptions - Customers     - Retrieving Customers     - Creating Customers     - Updating Customers   
- **Introduction**: Laravel Cashier Stripe provides an expressive, fluent interface to Stripe's subscription billing services. It handles almost all of the boilerplate subscription billing code you are dreading writing. In addition to basic subscription management, Cashier can handle coupons, swapping subscription, subscription "quantities", cancellation grace periods
- **Upgrading Cashier**: When upgrading to a new version of Cashier, it's important that you carefully review the upgrade guide.  > [!WARNING] > To prevent breaking changes, Cashier uses a fixed Stripe API version. Cashier 16 utilizes Stripe API version 2025-06-30.basil. The Stripe API version will be updated on minor releases in order to make use of new Stripe features an

## BLADE (Laravel 12)
- **Blade Templates**: - Introduction     - Supercharging Blade With Livewire - Displaying Data     - HTML Entity Encoding     - Blade and JavaScript Frameworks - Blade Directives     - If Statements     - Switch Statements     - Loops     - The Loop Variable     - Conditional Classes     - Additional Attributes     - Including Subviews     - The @once Directive     - Ra
- **Introduction**: Blade is the simple, yet powerful templating engine that is included with Laravel. Unlike some PHP templating engines, Blade does not restrict you from using plain PHP code in your templates. In fact, all Blade templates are compiled into plain PHP code and cached until they are modified, meaning Blade adds essentially zero overhead to your applica
- **Supercharging Blade With Livewire**: Want to take your Blade templates to the next level and build dynamic interfaces with ease? Check out Laravel Livewire. Livewire allows you to write Blade components that are augmented with dynamic functionality that would typically only be possible via frontend frameworks like React, Svelte, or Vue, providing a great approach to building modern, r

## BOOST (Laravel 12)
- **Laravel Boost**: - Introduction - Installation     - Keeping Boost Resources Updated     - Set Up Your Agents - MCP Server     - Available MCP Tools     - Manually Registering the MCP Server - AI Guidelines     - Available AI Guidelines     - Adding Custom AI Guidelines     - Overriding Boost AI Guidelines     - Third-Party Package AI Guidelines - Agent Skills     
- **Introduction**: Laravel Boost accelerates AI-assisted development by providing the essential guidelines and agent skills that help AI agents write high-quality Laravel applications that adhere to Laravel best practices.  Boost also provides a powerful Laravel ecosystem documentation API that combines a built-in MCP tool with an extensive knowledge base containing 
- **Installation**: Laravel Boost can be installed via Composer:  Next, install the MCP server and coding guidelines:  The boost:install command will generate the relevant agent guideline and skill files for the coding agents you selected during the installation process.  Once Laravel Boost has been installed, you're ready to start coding with Cursor, Claude Code, or 

## BROADCASTING (Laravel 12)
- **Broadcasting**: - Introduction - Quickstart - Server Side Installation     - Reverb     - Pusher Channels     - Ably - Client Side Installation     - Reverb     - Pusher Channels     - Ably - Concept Overview     - Using an Example Application - Defining Broadcast Events     - Broadcast Name     - Broadcast Data     - Broadcast Queue     - Broadcast Conditions    
- **Introduction**: In many modern web applications, WebSockets are used to implement realtime, live-updating user interfaces. When some data is updated on the server, a message is typically sent over a WebSocket connection to be handled by the client. WebSockets provide a more efficient alternative to continually polling your application's server for data changes tha
- **Supported Drivers**: By default, Laravel includes three server-side broadcasting drivers for you to choose from: Laravel Reverb, Pusher Channels, and Ably.  > [!NOTE] > Before diving into event broadcasting, make sure you have read Laravel's documentation on events and listeners.  <a name="quickstart"></a>

## CACHE (Laravel 12)
- **Cache**: - Introduction - Configuration     - Driver Prerequisites - Cache Usage     - Obtaining a Cache Instance     - Retrieving Items From the Cache     - Storing Items in the Cache     - Removing Items From the Cache     - Cache Memoization     - The Cache Helper - Cache Tags - Atomic Locks     - Managing Locks     - Managing Locks Across Processes     
- **Introduction**: Some of the data retrieval or processing tasks performed by your application could be CPU intensive or take several seconds to complete. When this is the case, it is common to cache the retrieved data for a time so it can be retrieved quickly on subsequent requests for the same data. The cached data is usually stored in a very fast data store such 
- **Configuration**: Your application's cache configuration file is located at config/cache.php. In this file, you may specify which cache store you would like to be used by default throughout your application. Laravel supports popular caching backends like Memcached, Redis, DynamoDB, and relational databases out of the box. In addition, a file based cache driver is av

## CASHIER-PADDLE (Laravel 12)
- **Laravel Cashier (Paddle)**: - Introduction - Upgrading Cashier - Installation     - Paddle Sandbox - Configuration     - Billable Model     - API Keys     - Paddle JS     - Currency Configuration     - Overriding Default Models - Quickstart     - Selling Products     - Selling Subscriptions - Checkout Sessions     - Overlay Checkout     - Inline Checkout     - Guest Checkouts
- **Introduction**: > [!WARNING] > This documentation is for Cashier Paddle 2.x's integration with Paddle Billing. If you're still using Paddle Classic, you should use Cashier Paddle 1.x.  Laravel Cashier Paddle provides an expressive, fluent interface to Paddle's subscription billing services. It handles almost all of the boilerplate subscription billing code you are
- **Upgrading Cashier**: When upgrading to a new version of Cashier, it's important that you carefully review the upgrade guide.  <a name="installation"></a>

## COLLECTIONS (Laravel 12)
- **Collections**: - Introduction     - Creating Collections     - Extending Collections - Available Methods - Higher Order Messages - Lazy Collections     - Introduction     - Creating Lazy Collections     - The Enumerable Contract     - Lazy Collection Methods  <a name="introduction"></a>
- **Introduction**: The Illuminate\Support\Collection class provides a fluent, convenient wrapper for working with arrays of data. For example, check out the following code. We'll use the collect helper to create a new collection instance from the array, run the strtoupper function on each element, and then remove all empty elements:  As you can see, the Collection cl
- **Creating Collections**: As mentioned above, the collect helper returns a new Illuminate\Support\Collection instance for the given array. So, creating a collection is as simple as:  You may also create a collection using the make and fromJson methods.  > [!NOTE] > The results of Eloquent queries are always returned as Collection instances.  <a name="extending-collections">

## CONCURRENCY (Laravel 12)
- **Concurrency**: - Introduction - Running Concurrent Tasks - Deferring Concurrent Tasks  <a name="introduction"></a>
- **Introduction**: Sometimes you may need to execute several slow tasks which do not depend on one another. In many cases, significant performance improvements can be realized by executing the tasks concurrently. Laravel's Concurrency facade provides a simple, convenient API for executing closures concurrently.  <a name="how-it-works"></a>
- **How it Works**: Laravel achieves concurrency by serializing the given closures and dispatching them to a hidden Artisan CLI command, which unserializes the closures and invokes it within its own PHP process. After the closure has been invoked, the resulting value is serialized back to the parent process.  The Concurrency facade supports three drivers: process (the

## CONFIGURATION (Laravel 12)
- **Configuration**: - Introduction - Environment Configuration     - Environment Variable Types     - Retrieving Environment Configuration     - Determining the Current Environment     - Encrypting Environment Files - Accessing Configuration Values - Configuration Caching - Configuration Publishing - Debug Mode - Maintenance Mode  <a name="introduction"></a>
- **Introduction**: All of the configuration files for the Laravel framework are stored in the config directory. Each option is documented, so feel free to look through the files and get familiar with the options available to you.  These configuration files allow you to configure things like your database connection information, your mail server information, as well a
- **The `about` Command**: Laravel can display an overview of your application's configuration, drivers, and environment via the about Artisan command.  If you're only interested in a particular section of the application overview output, you may filter for that section using the --only option:  Or, to explore a specific configuration file's values in detail, you may use the

## CONSOLE-TESTS (Laravel 12)
- **Console Tests**: - Introduction - Success / Failure Expectations - Input / Output Expectations - Console Events  <a name="introduction"></a>
- **Introduction**: In addition to simplifying HTTP testing, Laravel provides a simple API for testing your application's custom console commands.  <a name="success-failure-expectations"></a>
- **Success / Failure Expectations**: To get started, let's explore how to make assertions regarding an Artisan command's exit code. To accomplish this, we will use the artisan method to invoke an Artisan command from our test. Then, we will use the assertExitCode method to assert that the command completed with a given exit code:  You may use the assertNotExitCode method to assert tha

## CONTAINER (Laravel 12)
- **Service Container**: - Introduction     - Zero Configuration Resolution     - When to Utilize the Container - Binding     - Binding Basics     - Binding Interfaces to Implementations     - Contextual Binding     - Contextual Attributes     - Binding Primitives     - Binding Typed Variadics     - Tagging     - Extending Bindings - Resolving     - The Make Method     - A
- **Introduction**: The Laravel service container is a powerful tool for managing class dependencies and performing dependency injection. Dependency injection is a fancy phrase that essentially means this: class dependencies are "injected" into the class via the constructor or, in some cases, "setter" methods.  Let's look at a simple example:  In this example, the Pod
- **Zero Configuration Resolution**: If a class has no dependencies or only depends on other concrete classes (not interfaces), the container does not need to be instructed on how to resolve that class. For example, you may place the following code in your routes/web.php file:  In this example, hitting your application's / route will automatically resolve the Service class and inject 

## CONTEXT (Laravel 12)
- **Context**: - Introduction     - How it Works - Capturing Context     - Stacks - Retrieving Context     - Determining Item Existence - Removing Context - Hidden Context - Events     - Dehydrating     - Hydrated  <a name="introduction"></a>
- **Introduction**: Laravel's "context" capabilities enable you to capture, retrieve, and share information throughout requests, jobs, and commands executing within your application. This captured information is also included in logs written by your application, giving you deeper insight into the surrounding code execution history that occurred before a log entry was 
- **How it Works**: The best way to understand Laravel's context capabilities is to see it in action using  the built-in logging features. To get started, you may add information to the context using the Context facade. In this example, we will use a middleware to add the request URL and a unique trace ID to the context on every incoming request:  Information added to

## CONTRACTS (Laravel 12)
- **Contracts**: - Introduction     - Contracts vs. Facades - When to Use Contracts - How to Use Contracts - Contract Reference  <a name="introduction"></a>
- **Introduction**: Laravel's "contracts" are a set of interfaces that define the core services provided by the framework. For example, an Illuminate\Contracts\Queue\Queue contract defines the methods needed for queueing jobs, while the Illuminate\Contracts\Mail\Mailer contract defines the methods needed for sending e-mail.  Each contract has a corresponding implement
- **Contracts vs. Facades**: Laravel's facades and helper functions provide a simple way of utilizing Laravel's services without needing to type-hint and resolve contracts out of the service container. In most cases, each facade has an equivalent contract.  Unlike facades, which do not require you to require them in your class' constructor, contracts allow you to define explic

## CONTROLLERS (Laravel 12)
- **Controllers**: - Introduction - Writing Controllers     - Basic Controllers     - Single Action Controllers - Controller Middleware - Resource Controllers     - Partial Resource Routes     - Nested Resources     - Naming Resource Routes     - Naming Resource Route Parameters     - Scoping Resource Routes     - Localizing Resource URIs     - Supplementing Resource
- **Introduction**: Instead of defining all of your request handling logic as closures in your route files, you may wish to organize this behavior using "controller" classes. Controllers can group related request handling logic into a single class. For example, a UserController class might handle all incoming requests related to users, including showing, creating, upd
- **Basic Controllers**: To quickly generate a new controller, you may run the make:controller Artisan command. By default, all of the controllers for your application are stored in the app/Http/Controllers directory:  Let's take a look at an example of a basic controller. A controller may have any number of public methods which will respond to incoming HTTP requests:  Onc

## CSRF (Laravel 12)
- **CSRF Protection**: - Introduction - Preventing CSRF Requests     - Excluding URIs - X-CSRF-Token - X-XSRF-Token  <a name="csrf-introduction"></a>
- **Introduction**: Cross-site request forgeries are a type of malicious exploit whereby unauthorized commands are performed on behalf of an authenticated user. Thankfully, Laravel makes it easy to protect your application from cross-site request forgery (CSRF) attacks.  <a name="csrf-explanation"></a>
- **An Explanation of the Vulnerability**: In case you're not familiar with cross-site request forgeries, let's discuss an example of how this vulnerability can be exploited. Imagine your application has a /user/email route that accepts a POST request to change the authenticated user's email address. Most likely, this route expects an email input field to contain the email address the user 

## DATABASE-TESTING (Laravel 12)
- **Database Testing**: - Introduction     - Resetting the Database After Each Test - Model Factories - Running Seeders - Available Assertions  <a name="introduction"></a>
- **Introduction**: Laravel provides a variety of helpful tools and assertions to make it easier to test your database driven applications. In addition, Laravel model factories and seeders make it painless to create test database records using your application's Eloquent models and relationships. We'll discuss all of these powerful features in the following documentat
- **Resetting the Database After Each Test**: Before proceeding much further, let's discuss how to reset your database after each of your tests so that data from a previous test does not interfere with subsequent tests. Laravel's included Illuminate\Foundation\Testing\RefreshDatabase trait will take care of this for you. Simply use the trait on your test class:  The Illuminate\Foundation\Testi

## DATABASE (Laravel 12)
- **Database: Getting Started**: - Introduction     - Configuration     - Read and Write Connections - Running SQL Queries     - Using Multiple Database Connections     - Listening for Query Events     - Monitoring Cumulative Query Time - Database Transactions - Connecting to the Database CLI - Inspecting Your Databases - Monitoring Your Databases  <a name="introduction"></a>
- **Introduction**: Almost every modern web application interacts with a database. Laravel makes interacting with databases extremely simple across a variety of supported databases using raw SQL, a fluent query builder, and the Eloquent ORM. Currently, Laravel provides first-party support for five databases:  <div class="content-list" markdown="1">  - MariaDB 10.3+ (V
- **Configuration**: The configuration for Laravel's database services is located in your application's config/database.php configuration file. In this file, you may define all of your database connections, as well as specify which connection should be used by default. Most of the configuration options within this file are driven by the values of your application's env

## DEPLOYMENT (Laravel 12)
- **Deployment**: - Introduction - Server Requirements - Server Configuration     - Nginx     - FrankenPHP     - Directory Permissions - Optimization     - Caching Configuration     - Caching Events     - Caching Routes     - Caching Views - Reloading Services - Debug Mode - The Health Route - Deploying With Laravel Cloud or Forge  <a name="introduction"></a>
- **Introduction**: When you're ready to deploy your Laravel application to production, there are some important things you can do to make sure your application is running as efficiently as possible. In this document, we'll cover some great starting points for making sure your Laravel application is deployed properly.  <a name="server-requirements"></a>
- **Server Requirements**: The Laravel framework has a few system requirements. You should ensure that your web server has the following minimum PHP version and extensions:  <div class="content-list" markdown="1">  - PHP >= 8.2 - Ctype PHP Extension - cURL PHP Extension - DOM PHP Extension - Fileinfo PHP Extension - Filter PHP Extension - Hash PHP Extension - Mbstring PHP Ex

## DUSK (Laravel 12)
- **Laravel Dusk**: - Introduction - Installation     - Managing ChromeDriver Installations     - Using Other Browsers - Getting Started     - Generating Tests     - Resetting the Database After Each Test     - Running Tests     - Environment Handling - Browser Basics     - Creating Browsers     - Navigation     - Resizing Browser Windows     - Browser Macros     - Au
- **Introduction**: > [!WARNING] > Pest 4 now includes automated browser testing which offers significant performance and usability improvements compared to Laravel Dusk. For new projects, we recommend using Pest for browser testing.  Laravel Dusk provides an expressive, easy-to-use browser automation and testing API. By default, Dusk does not require you to install J
- **Installation**: To get started, you should install Google Chrome and add the laravel/dusk Composer dependency to your project:  > [!WARNING] > If you are manually registering Dusk's service provider, you should **never** register it in your production environment, as doing so could lead to arbitrary users being able to authenticate with your application.  After in

## ELOQUENT-COLLECTIONS (Laravel 12)
- **Eloquent: Collections**: - Introduction - Available Methods - Custom Collections  <a name="introduction"></a>
- **Introduction**: All Eloquent methods that return more than one model result will return instances of the Illuminate\Database\Eloquent\Collection class, including results retrieved via the get method or accessed via a relationship. The Eloquent collection object extends Laravel's base collection, so it naturally inherits dozens of methods used to fluently work with
- **Eloquent Collection Conversion**: While most Eloquent collection methods return a new instance of an Eloquent collection, the collapse, flatten, flip, keys, pluck, and zip methods return a base collection instance. Likewise, if a map operation returns a collection that does not contain any Eloquent models, it will be converted to a base collection instance.  <a name="available-meth

## ELOQUENT-FACTORIES (Laravel 12)
- **Eloquent: Factories**: - Introduction - Defining Model Factories     - Generating Factories     - Factory States     - Factory Callbacks - Creating Models Using Factories     - Instantiating Models     - Persisting Models     - Sequences - Factory Relationships     - Has Many Relationships     - Belongs To Relationships     - Many to Many Relationships     - Polymorphic 
- **Introduction**: When testing your application or seeding your database, you may need to insert a few records into your database. Instead of manually specifying the value of each column, Laravel allows you to define a set of default attributes for each of your Eloquent models using model factories.  To see an example of how to write a factory, take a look at the da
- **Generating Factories**: To create a factory, execute the make:factory Artisan command:  The new factory class will be placed in your database/factories directory.  <a name="factory-and-model-discovery-conventions"></a>

## ELOQUENT-MUTATORS (Laravel 12)
- **Eloquent: Mutators & Casting**: - Introduction - Accessors and Mutators     - Defining an Accessor     - Defining a Mutator - Attribute Casting     - Array and JSON Casting     - Binary Casting     - Date Casting     - Enum Casting     - Encrypted Casting     - Query Time Casting - Custom Casts     - Value Object Casting     - Array / JSON Serialization     - Inbound Casting     
- **Introduction**: Accessors, mutators, and attribute casting allow you to transform Eloquent attribute values when you retrieve or set them on model instances. For example, you may want to use the Laravel encrypter to encrypt a value while it is stored in the database, and then automatically decrypt the attribute when you access it on an Eloquent model. Or, you may 
- **Defining an Accessor**: An accessor transforms an Eloquent attribute value when it is accessed. To define an accessor, create a protected method on your model to represent the accessible attribute. This method name should correspond to the "camel case" representation of the true underlying model attribute / database column when applicable.  In this example, we'll define a

## ELOQUENT-RELATIONSHIPS (Laravel 12)
- **Eloquent: Relationships**: - Introduction - Defining Relationships     - One to One / Has One     - One to Many / Has Many     - One to Many (Inverse) / Belongs To     - Has One of Many     - Has One Through     - Has Many Through - Scoped Relationships - Many to Many Relationships     - Retrieving Intermediate Table Columns     - Filtering Queries via Intermediate Table Col
- **Introduction**: Database tables are often related to one another. For example, a blog post may have many comments or an order could be related to the user who placed it. Eloquent makes managing and working with these relationships easy, and supports a variety of common relationships:  <div class="content-list" markdown="1">  - One To One - One To Many - Many To Ma
- **Defining Relationships**: Eloquent relationships are defined as methods on your Eloquent model classes. Since relationships also serve as powerful query builders, defining relationships as methods provides powerful method chaining and querying capabilities. For example, we may chain additional query constraints on this posts relationship:  But, before diving too deep into u

## ELOQUENT-RESOURCES (Laravel 12)
- **Eloquent: API Resources**: - Introduction - Generating Resources - Concept Overview     - Resource Collections - Writing Resources     - Data Wrapping     - Pagination     - Conditional Attributes     - Conditional Relationships     - Adding Meta Data - Resource Responses  <a name="introduction"></a>
- **Introduction**: When building an API, you may need a transformation layer that sits between your Eloquent models and the JSON responses that are actually returned to your application's users. For example, you may wish to display certain attributes for a subset of users and not others, or you may wish to always include certain relationships in the JSON representati
- **Generating Resources**: To generate a resource class, you may use the make:resource Artisan command. By default, resources will be placed in the app/Http/Resources directory of your application. Resources extend the Illuminate\Http\Resources\Json\JsonResource class:  <a name="generating-resource-collections"></a>

## ELOQUENT-SERIALIZATION (Laravel 12)
- **Eloquent: Serialization**: - Introduction - Serializing Models and Collections     - Serializing to Arrays     - Serializing to JSON - Hiding Attributes From JSON - Appending Values to JSON - Date Serialization  <a name="introduction"></a>
- **Introduction**: When building APIs using Laravel, you will often need to convert your models and relationships to arrays or JSON. Eloquent includes convenient methods for making these conversions, as well as controlling which attributes are included in the serialized representation of your models.  > [!NOTE] > For an even more robust way of handling Eloquent model
- **Serializing to Arrays**: To convert a model and its loaded relationships to an array, you should use the toArray method. This method is recursive, so all attributes and all relations (including the relations of relations) will be converted to arrays:  The attributesToArray method may be used to convert a model's attributes to an array but not its relationships:  You may al

## ELOQUENT (Laravel 12)
- **Eloquent: Getting Started**: - Introduction - Generating Model Classes - Eloquent Model Conventions     - Table Names     - Primary Keys     - UUID and ULID Keys     - Timestamps     - Database Connections     - Default Attribute Values     - Configuring Eloquent Strictness - Retrieving Models     - Collections     - Chunking Results     - Chunk Using Lazy Collections     - Cu
- **Introduction**: Laravel includes Eloquent, an object-relational mapper (ORM) that makes it enjoyable to interact with your database. When using Eloquent, each database table has a corresponding "Model" that is used to interact with that table. In addition to retrieving records from the database table, Eloquent models allow you to insert, update, and delete records
- **Generating Model Classes**: To get started, let's create an Eloquent model. Models typically live in the app\Models directory and extend the Illuminate\Database\Eloquent\Model class. You may use the make:model Artisan command to generate a new model:  If you would like to generate a database migration when you generate the model, you may use the --migration or -m option:  You

## ENCRYPTION (Laravel 12)
- **Encryption**: - Introduction - Configuration     - Gracefully Rotating Encryption Keys - Using the Encrypter  <a name="introduction"></a>
- **Introduction**: Laravel's encryption services provide a simple, convenient interface for encrypting and decrypting text via OpenSSL using AES-256 and AES-128 encryption. All of Laravel's encrypted values are signed using a message authentication code (MAC) so that their underlying value cannot be modified or tampered with once encrypted.  <a name="configuration"><
- **Configuration**: Before using Laravel's encrypter, you must set the key configuration option in your config/app.php configuration file. This configuration value is driven by the APP_KEY environment variable. You should use the php artisan key:generate command to generate this variable's value since the key:generate command will use PHP's secure random bytes generat

## ENVOY (Laravel 12)
- **Laravel Envoy**: - Introduction - Installation - Writing Tasks     - Defining Tasks     - Multiple Servers     - Setup     - Variables     - Stories     - Hooks - Running Tasks     - Confirming Task Execution - Notifications     - Slack     - Discord     - Telegram     - Microsoft Teams  <a name="introduction"></a>
- **Introduction**: Laravel Envoy is a tool for executing common tasks you run on your remote servers. Using Blade style syntax, you can easily setup tasks for deployment, Artisan commands, and more. Currently, Envoy only supports the Mac and Linux operating systems. However, Windows support is achievable using WSL2.  <a name="installation"></a>
- **Installation**: First, install Envoy into your project using the Composer package manager:  Once Envoy has been installed, the Envoy binary will be available in your application's vendor/bin directory:  <a name="writing-tasks"></a>

## ERRORS (Laravel 12)
- **Error Handling**: - Introduction - Configuration - Handling Exceptions     - Reporting Exceptions     - Exception Log Levels     - Ignoring Exceptions by Type     - Rendering Exceptions     - Reportable and Renderable Exceptions - Throttling Reported Exceptions - HTTP Exceptions     - Custom HTTP Error Pages  <a name="introduction"></a>
- **Introduction**: When you start a new Laravel project, error and exception handling is already configured for you; however, at any point, you may use the withExceptions method in your application's bootstrap/app.php to manage how exceptions are reported and rendered by your application.  The $exceptions object provided to the withExceptions closure is an instance o
- **Configuration**: The debug option in your config/app.php configuration file determines how much information about an error is actually displayed to the user. By default, this option is set to respect the value of the APP_DEBUG environment variable, which is stored in your .env file.  During local development, you should set the APP_DEBUG environment variable to tru

## EVENTS (Laravel 12)
- **Events**: - Introduction - Generating Events and Listeners - Registering Events and Listeners     - Event Discovery     - Manually Registering Events     - Closure Listeners - Defining Events - Defining Listeners - Queued Event Listeners     - Manually Interacting With the Queue     - Queued Event Listeners and Database Transactions     - Queued Listener Mid
- **Introduction**: Laravel's events provide a simple observer pattern implementation, allowing you to subscribe and listen for various events that occur within your application. Event classes are typically stored in the app/Events directory, while their listeners are stored in app/Listeners. Don't worry if you don't see these directories in your application as they w
- **Generating Events and Listeners**: To quickly generate events and listeners, you may use the make:event and make:listener Artisan commands:  For convenience, you may also invoke the make:event and make:listener Artisan commands without additional arguments. When you do so, Laravel will automatically prompt you for the class name and, when creating a listener, the event it should lis

## FACADES (Laravel 12)
- **Facades**: - Introduction - When to Utilize Facades     - Facades vs. Dependency Injection     - Facades vs. Helper Functions - How Facades Work - Real-Time Facades - Facade Class Reference  <a name="introduction"></a>
- **Introduction**: Throughout the Laravel documentation, you will see examples of code that interacts with Laravel's features via "facades". Facades provide a "static" interface to classes that are available in the application's service container. Laravel ships with many facades which provide access to almost all of Laravel's features.  Laravel facades serve as "stat
- **Helper Functions**: To complement facades, Laravel offers a variety of global "helper functions" that make it even easier to interact with common Laravel features. Some of the common helper functions you may interact with are view, response, url, config, and more. Each helper function offered by Laravel is documented with their corresponding feature; however, a comple

## FILESYSTEM (Laravel 12)
- **File Storage**: - Introduction - Configuration     - The Local Driver     - The Public Disk     - Driver Prerequisites     - Scoped and Read-Only Filesystems     - Amazon S3 Compatible Filesystems - Obtaining Disk Instances     - On-Demand Disks - Retrieving Files     - Downloading Files     - File URLs     - Temporary URLs     - File Metadata - Storing Files     
- **Introduction**: Laravel provides a powerful filesystem abstraction thanks to the wonderful Flysystem PHP package by Frank de Jonge. The Laravel Flysystem integration provides simple drivers for working with local filesystems, SFTP, and Amazon S3. Even better, it's amazingly simple to switch between these storage options between your local development machine and p
- **Configuration**: Laravel's filesystem configuration file is located at config/filesystems.php. Within this file, you may configure all of your filesystem "disks". Each disk represents a particular storage driver and storage location. Example configurations for each supported driver are included in the configuration file so you can modify the configuration to reflec

## FOLIO (Laravel 12)
- **Laravel Folio**: - Introduction - Installation     - Page Paths / URIs     - Subdomain Routing - Creating Routes     - Nested Routes     - Index Routes - Route Parameters - Route Model Binding     - Soft Deleted Models - Render Hooks - Named Routes - Middleware - Route Caching  <a name="introduction"></a>
- **Introduction**: Laravel Folio is a powerful page based router designed to simplify routing in Laravel applications. With Laravel Folio, generating a route becomes as effortless as creating a Blade template within your application's resources/views/pages directory.  For example, to create a page that is accessible at the /greeting URL, just create a greeting.blade.
- **Installation**: To get started, install Folio into your project using the Composer package manager:  After installing Folio, you may execute the folio:install Artisan command, which will install Folio's service provider into your application. This service provider registers the directory where Folio will search for routes / pages:  <a name="page-paths-uris"></a>

## FORTIFY (Laravel 12)
- **Laravel Fortify**: - Introduction     - What is Fortify?     - When Should I Use Fortify? - Installation     - Fortify Features     - Disabling Views - Authentication     - Customizing User Authentication     - Customizing the Authentication Pipeline     - Customizing Redirects - Two-Factor Authentication     - Enabling Two-Factor Authentication     - Authenticating 
- **Introduction**: Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel. Fortify registers the routes and controllers needed to implement all of Laravel's authentication features, including login, registration, password reset, email verification, and more. After installing Fortify, you may run the route:list Artisan command to see 
- **What is Fortify?**: As mentioned previously, Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel. Fortify registers the routes and controllers needed to implement all of Laravel's authentication features, including login, registration, password reset, email verification, and more.  **You are not required to use Fortify in order to 

## FRONTEND (Laravel 12)
- **Frontend**: - Introduction - Using PHP     - PHP and Blade     - Livewire     - Starter Kits - Using React, Svelte, or Vue     - Inertia     - Starter Kits - Bundling Assets  <a name="introduction"></a>
- **Introduction**: Laravel is a backend framework that provides all of the features you need to build modern web applications, such as routing, validation, caching, queues, file storage, and more. However, we believe it's important to offer developers a beautiful full-stack experience, including powerful approaches for building your application's frontend.  There are
- **PHP and Blade**: In the past, most PHP applications rendered HTML to the browser using simple HTML templates interspersed with PHP echo statements which render data that was retrieved from a database during the request:  In Laravel, this approach to rendering HTML can still be achieved using views and Blade. Blade is an extremely light-weight templating language th

## HASHING (Laravel 12)
- **Hashing**: - Introduction - Configuration - Basic Usage     - Hashing Passwords     - Verifying That a Password Matches a Hash     - Determining if a Password Needs to be Rehashed - Hash Algorithm Verification  <a name="introduction"></a>
- **Introduction**: The Laravel Hash facade provides secure Bcrypt and Argon2 hashing for storing user passwords. If you are using one of the Laravel application starter kits, Bcrypt will be used for registration and authentication by default.  Bcrypt is a great choice for hashing passwords because its "work factor" is adjustable, which means that the time it takes to
- **Configuration**: By default, Laravel uses the bcrypt hashing driver when hashing data. However, several other hashing drivers are supported, including argon and argon2id.  You may specify your application's hashing driver using the HASH_DRIVER environment variable. But, if you want to customize all of Laravel's hashing driver options, you should publish the complet

## HELPERS (Laravel 12)
- **Helpers**: - Introduction - Available Methods - Other Utilities     - Benchmarking     - Dates and Time     - Deferred Functions     - Lottery     - Pipeline     - Sleep     - Timebox     - URI  <a name="introduction"></a>
- **Introduction**: Laravel includes a variety of global "helper" PHP functions. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.  <a name="available-methods"></a>
- **Available Methods**: <style>     .collection-method-list > p {         columns: 10.8em 3; -moz-columns: 10.8em 3; -webkit-columns: 10.8em 3;     }      .collection-method-list a {         display: block;         overflow: hidden;         text-overflow: ellipsis;         white-space: nowrap;     } </style>  <a name="arrays-and-objects-method-list"></a>

## HOMESTEAD (Laravel 12)
- **Laravel Homestead**: - Introduction - Installation and Setup     - First Steps     - Configuring Homestead     - Configuring Nginx Sites     - Configuring Services     - Launching the Vagrant Box     - Per Project Installation     - Installing Optional Features     - Aliases - Updating Homestead - Daily Usage     - Connecting via SSH     - Adding Additional Sites     -
- **Introduction**: > [!WARNING] > Laravel Homestead is a legacy package that is no longer actively maintained. Laravel Sail may be used as a modern alternative.  Laravel strives to make the entire PHP development experience delightful, including your local development environment. Laravel Homestead is an official, pre-packaged Vagrant box that provides you a wonderfu
- **Included Software**: <style>     #software-list > ul {         column-count: 2; -moz-column-count: 2; -webkit-column-count: 2;         column-gap: 5em; -moz-column-gap: 5em; -webkit-column-gap: 5em;         line-height: 1.9;     } </style>  <div id="software-list" markdown="1">  - Ubuntu 22.04 - Git - PHP 8.3 - PHP 8.2 - PHP 8.1 - PHP 8.0 - PHP 7.4 - PHP 7.3 - PHP 7.2 

## HORIZON (Laravel 12)
- **Laravel Horizon**: - Introduction - Installation     - Configuration     - Dashboard Authorization     - Max Job Attempts     - Job Timeout     - Job Backoff     - Silenced Jobs - Balancing Strategies     - Auto Balancing     - Simple Balancing     - No Balancing - Upgrading Horizon - Running Horizon     - Deploying Horizon - Tags - Notifications - Metrics - Deleting
- **Introduction**: > [!NOTE] > Before digging into Laravel Horizon, you should familiarize yourself with Laravel's base queue services. Horizon augments Laravel's queue with additional features that may be confusing if you are not already familiar with the basic queue features offered by Laravel.  Laravel Horizon provides a beautiful dashboard and code-driven configu
- **Installation**: > [!WARNING] > Laravel Horizon requires that you use Redis to power your queue. Therefore, you should ensure that your queue connection is set to redis in your application's config/queue.php configuration file. Horizon is not compatible with Redis Cluster at this time.  You may install Horizon into your project using the Composer package manager:  

## HTTP-CLIENT (Laravel 12)
- **HTTP Client**: - Introduction - Making Requests     - Request Data     - Headers     - Authentication     - Timeout     - Retries     - Error Handling     - Guzzle Middleware     - Guzzle Options - Concurrent Requests     - Request Pooling     - Request Batching - Macros - Testing     - Faking Responses     - Inspecting Requests     - Preventing Stray Requests - 
- **Introduction**: Laravel provides an expressive, minimal API around the Guzzle HTTP client, allowing you to quickly make outgoing HTTP requests to communicate with other web applications. Laravel's wrapper around Guzzle is focused on its most common use cases and a wonderful developer experience.  <a name="making-requests"></a>
- **Making Requests**: To make requests, you may use the head, get, post, put, patch, and delete methods provided by the Http facade. First, let's examine how to make a basic GET request to another URL:  The get method returns an instance of Illuminate\Http\Client\Response, which provides a variety of methods that may be used to inspect the response:  The Illuminate\Http

## HTTP-TESTS (Laravel 12)
- **HTTP Tests**: - Introduction - Making Requests     - Customizing Request Headers     - Cookies     - Session / Authentication     - Debugging Responses     - Exception Handling - Testing JSON APIs     - Fluent JSON Testing - Testing File Uploads - Testing Views     - Rendering Blade and Components - Caching Routes - Available Assertions     - Response Assertions
- **Introduction**: Laravel provides a very fluent API for making HTTP requests to your application and examining the responses. For example, take a look at the feature test defined below:  The get method makes a GET request into the application, while the assertStatus method asserts that the returned response should have the given HTTP status code. In addition to thi
- **Making Requests**: To make a request to your application, you may invoke the get, post, put, patch, or delete methods within your test. These methods do not actually issue a "real" HTTP request to your application. Instead, the entire network request is simulated internally.  Instead of returning an Illuminate\Http\Response instance, test request methods return an in

## INSTALLATION (Laravel 12)
- **Installation**: - Meet Laravel     - Why Laravel? - Creating a Laravel Application     - Installing PHP and the Laravel Installer     - Creating an Application - Initial Configuration     - Environment Based Configuration     - Databases and Migrations     - Directory Configuration - Installation Using Herd     - Herd on macOS     - Herd on Windows - IDE Support -
- **Meet Laravel**: Laravel is a web application framework with expressive, elegant syntax. A web framework provides a structure and starting point for creating your application, allowing you to focus on creating something amazing while we sweat the details.  Laravel strives to provide an amazing developer experience while providing powerful features such as thorough 
- **Why Laravel?**: There are a variety of tools and frameworks available to you when building a web application. However, we believe Laravel is the best choice for building modern, full-stack web applications.

## LIFECYCLE (Laravel 12)
- **Request Lifecycle**: - Introduction - Lifecycle Overview     - First Steps     - HTTP / Console Kernels     - Service Providers     - Routing     - Finishing Up - Focus on Service Providers  <a name="introduction"></a>
- **Introduction**: When using any tool in the "real world", you feel more confident if you understand how that tool works. Application development is no different. When you understand how your development tools function, you feel more comfortable and confident using them.  The goal of this document is to give you a good, high-level overview of how the Laravel framewo
- **First Steps**: The entry point for all requests to a Laravel application is the public/index.php file. All requests are directed to this file by your web server (Apache / Nginx) configuration. The index.php file doesn't contain much code. Rather, it is a starting point for loading the rest of the framework.  The index.php file loads the Composer generated autoloa

## LOCALIZATION (Laravel 12)
- **Localization**: - Introduction     - Publishing the Language Files     - Configuring the Locale     - Pluralization Language - Defining Translation Strings     - Using Short Keys     - Using Translation Strings as Keys - Retrieving Translation Strings     - Replacing Parameters in Translation Strings     - Pluralization - Overriding Package Language Files  <a name
- **Introduction**: > [!NOTE] > By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files, you may publish them via the lang:publish Artisan command.  Laravel's localization features provide a convenient way to retrieve strings in various languages, allowing you to easily support multiple 
- **Publishing the Language Files**: By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files or create your own, you should scaffold the lang directory via the lang:publish Artisan command. The lang:publish command will create the lang directory in your application and publish the default set of language

## LOGGING (Laravel 12)
- **Logging**: - Introduction - Configuration     - Available Channel Drivers     - Channel Prerequisites     - Logging Deprecation Warnings - Building Log Stacks - Writing Log Messages     - Contextual Information     - Writing to Specific Channels - Monolog Channel Customization     - Customizing Monolog for Channels     - Creating Monolog Handler Channels     
- **Introduction**: To help you learn more about what's happening within your application, Laravel provides robust logging services that allow you to log messages to files, the system error log, and even to Slack to notify your entire team.  Laravel logging is based on "channels". Each channel represents a specific way of writing log information. For example, the sing
- **Configuration**: All of the configuration options that control your application's logging behavior are housed in the config/logging.php configuration file. This file allows you to configure your application's log channels, so be sure to review each of the available channels and their options. We'll review a few common options below.  By default, Laravel will use th

## MAIL (Laravel 12)
- **Mail**: - Introduction     - Configuration     - Driver Prerequisites     - Failover Configuration     - Round Robin Configuration - Generating Mailables - Writing Mailables     - Configuring the Sender     - Configuring the View     - View Data     - Attachments     - Inline Attachments     - Attachable Objects     - Headers     - Tags and Metadata     - 
- **Introduction**: Sending email doesn't have to be complicated. Laravel provides a clean, simple email API powered by the popular Symfony Mailer component. Laravel and Symfony Mailer provide drivers for sending email via SMTP, Mailgun, Postmark, Resend, Amazon SES, and sendmail, allowing you to quickly get started sending mail through a local or cloud-based service 
- **Configuration**: Laravel's email services may be configured via your application's config/mail.php configuration file. Each mailer configured within this file may have its own unique configuration and even its own unique "transport", allowing your application to use different email services to send certain email messages. For example, your application might use Pos

## MCP (Laravel 12)
- **Laravel MCP**: - Introduction - Installation     - Publishing Routes - Creating Servers     - Server Registration     - Web Servers     - Local Servers - Tools     - Creating Tools     - Tool Input Schemas     - Tool Output Schemas     - Validating Tool Arguments     - Tool Dependency Injection     - Tool Annotations     - Conditional Tool Registration     - Tool
- **Introduction**: Laravel MCP provides a simple and elegant way for AI clients to interact with your Laravel application through the Model Context Protocol. It offers an expressive, fluent interface for defining servers, tools, resources, and prompts that enable AI-powered interactions with your application.  <a name="installation"></a>
- **Installation**: To get started, install Laravel MCP into your project using the Composer package manager:  <a name="publishing-routes"></a>

## MIDDLEWARE (Laravel 12)
- **Middleware**: - Introduction - Defining Middleware - Registering Middleware     - Global Middleware     - Assigning Middleware to Routes     - Middleware Groups     - Middleware Aliases     - Sorting Middleware - Middleware Parameters - Terminable Middleware  <a name="introduction"></a>
- **Introduction**: Middleware provide a convenient mechanism for inspecting and filtering HTTP requests entering your application. For example, Laravel includes a middleware that verifies the user of your application is authenticated. If the user is not authenticated, the middleware will redirect the user to your application's login screen. However, if the user is au
- **Defining Middleware**: To create a new middleware, use the make:middleware Artisan command:  This command will place a new EnsureTokenIsValid class within your app/Http/Middleware directory. In this middleware, we will only allow access to the route if the supplied token input matches a specified value. Otherwise, we will redirect the users back to the /home URI:  As you

## MIGRATIONS (Laravel 12)
- **Database: Migrations**: - Introduction - Generating Migrations     - Squashing Migrations - Migration Structure - Running Migrations     - Rolling Back Migrations - Tables     - Creating Tables     - Updating Tables     - Renaming / Dropping Tables - Columns     - Creating Columns     - Available Column Types     - Column Modifiers     - Modifying Columns     - Renaming C
- **Introduction**: Migrations are like version control for your database, allowing your team to define and share the application's database schema definition. If you have ever had to tell a teammate to manually add a column to their local database schema after pulling in your changes from source control, you've faced the problem that database migrations solve.  The L
- **Generating Migrations**: You may use the make:migration Artisan command to generate a database migration. The new migration will be placed in your database/migrations directory. Each migration filename contains a timestamp that allows Laravel to determine the order of the migrations:  Laravel will use the name of the migration to attempt to guess the name of the table and 

## MIX (Laravel 12)
- **Introduction**: > [!WARNING] > Laravel Mix is a legacy package that is no longer actively maintained. Vite may be used as a modern alternative.  Laravel Mix, a package developed by Laracasts creator Jeffrey Way, provides a fluent API for defining webpack build steps for your Laravel application using several common CSS and JavaScript pre-processors.  In other word

## MOCKING (Laravel 12)
- **Mocking**: - Introduction - Mocking Objects - Mocking Facades     - Facade Spies - Interacting With Time  <a name="introduction"></a>
- **Introduction**: When testing Laravel applications, you may wish to "mock" certain aspects of your application so they are not actually executed during a given test. For example, when testing a controller that dispatches an event, you may wish to mock the event listeners so they are not actually executed during the test. This allows you to only test the controller'
- **Mocking Objects**: When mocking an object that is going to be injected into your application via Laravel's service container, you will need to bind your mocked instance into the container as an instance binding. This will instruct the container to use your mocked instance of the object instead of constructing the object itself:  In order to make this more convenient,

## MONGODB (Laravel 12)
- **MongoDB**: - Introduction - Installation     - MongoDB Driver     - Starting a MongoDB Server     - Install the Laravel MongoDB Package - Configuration - Features  <a name="introduction"></a>
- **Introduction**: MongoDB is one of the most popular NoSQL document-oriented database, used for its high write load (useful for analytics or IoT) and high availability (easy to set replica sets with automatic failover). It can also shard the database easily for horizontal scalability and has a powerful query language for doing aggregation, text search or geospatial 
- **MongoDB Driver**: To connect to a MongoDB database, the mongodb PHP extension is required. If you are developing locally using Laravel Herd or installed PHP via php.new, you already have this extension installed on your system. However, if you need to install the extension manually, you may do so via PECL:  For more information on installing the MongoDB PHP extensio

## NOTIFICATIONS (Laravel 12)
- **Notifications**: - Introduction - Generating Notifications - Sending Notifications     - Using the Notifiable Trait     - Using the Notification Facade     - Specifying Delivery Channels     - Queueing Notifications     - On-Demand Notifications - Mail Notifications     - Formatting Mail Messages     - Customizing the Sender     - Customizing the Recipient     - Cu
- **Introduction**: In addition to support for sending email, Laravel provides support for sending notifications across a variety of delivery channels, including email, SMS (via Vonage, formerly known as Nexmo), and Slack. In addition, a variety of community built notification channels have been created to send notifications over dozens of different channels! Notifica
- **Generating Notifications**: In Laravel, each notification is represented by a single class that is typically stored in the app/Notifications directory. Don't worry if you don't see this directory in your application - it will be created for you when you run the make:notification Artisan command:  This command will place a fresh notification class in your app/Notifications dir

## OCTANE (Laravel 12)
- **Laravel Octane**: - Introduction - Installation - Server Prerequisites     - FrankenPHP     - RoadRunner     - Swoole - Serving Your Application     - Serving Your Application via HTTPS     - Serving Your Application via Nginx     - Watching for File Changes     - Specifying the Worker Count     - Specifying the Max Request Count     - Specifying the Max Execution T
- **Introduction**: Laravel Octane supercharges your application's performance by serving your application using high-powered application servers, including FrankenPHP, Open Swoole, Swoole, and RoadRunner. Octane boots your application once, keeps it in memory, and then feeds it requests at supersonic speeds.  <a name="installation"></a>
- **Installation**: Octane may be installed via the Composer package manager:  After installing Octane, you may execute the octane:install Artisan command, which will install Octane's configuration file into your application:  <a name="server-prerequisites"></a>

## PACKAGES (Laravel 12)
- **Package Development**: - Introduction     - A Note on Facades - Package Discovery - Service Providers - Resources     - Configuration     - Routes     - Migrations     - Language Files     - Views     - View Components     - "About" Artisan Command - Commands     - Optimize Commands     - Reload Commands - Public Assets - Publishing File Groups  <a name="introduction"></
- **Introduction**: Packages are the primary way of adding functionality to Laravel. Packages might be anything from a great way to work with dates like Carbon or a package that allows you to associate files with Eloquent models like Spatie's Laravel Media Library.  There are different types of packages. Some packages are stand-alone, meaning they work with any PHP fr
- **A Note on Facades**: When writing a Laravel application, it generally does not matter if you use contracts or facades since both provide essentially equal levels of testability. However, when writing packages, your package will not typically have access to all of Laravel's testing helpers. If you would like to be able to write your package tests as if the package were 

## PAGINATION (Laravel 12)
- **Database: Pagination**: - Introduction - Basic Usage     - Paginating Query Builder Results     - Paginating Eloquent Results     - Cursor Pagination     - Manually Creating a Paginator     - Customizing Pagination URLs - Displaying Pagination Results     - Adjusting the Pagination Link Window     - Converting Results to JSON - Customizing the Pagination View     - Using 
- **Introduction**: In other frameworks, pagination can be very painful. We hope Laravel's approach to pagination will be a breath of fresh air. Laravel's paginator is integrated with the query builder and Eloquent ORM and provides convenient, easy-to-use pagination of database records with zero configuration.  By default, the HTML generated by the paginator is compat
- **Tailwind**: If you are using Laravel's default Tailwind pagination views with Tailwind 4.x, your application's resources/css/app.css file will already be properly configured to @source Laravel's pagination views:  <a name="basic-usage"></a>

## PASSPORT (Laravel 12)
- **Laravel Passport**: - Introduction     - Passport or Sanctum? - Installation     - Deploying Passport     - Upgrading Passport - Configuration     - Token Lifetimes     - Overriding Default Models     - Overriding Routes - Authorization Code Grant     - Managing Clients     - Requesting Tokens     - Managing Tokens     - Refreshing Tokens     - Revoking Tokens     - P
- **Introduction**: Laravel Passport provides a full OAuth2 server implementation for your Laravel application in a matter of minutes. Passport is built on top of the League OAuth2 server that is maintained by Andy Millington and Simon Hamp.  > [!NOTE] > This documentation assumes you are already familiar with OAuth2. If you do not know anything about OAuth2, consider
- **Passport or Sanctum?**: Before getting started, you may wish to determine if your application would be better served by Laravel Passport or Laravel Sanctum. If your application absolutely needs to support OAuth2, then you should use Laravel Passport.  However, if you are attempting to authenticate a single-page application, mobile application, or issue API tokens, you sho

## PASSWORDS (Laravel 12)
- **Resetting Passwords**: - Introduction     - Configuration     - Driver Prerequisites     - Model Preparation     - Configuring Trusted Hosts - Routing     - Requesting the Password Reset Link     - Resetting the Password - Deleting Expired Tokens - Customization  <a name="introduction"></a>
- **Introduction**: Most web applications provide a way for users to reset their forgotten passwords. Rather than forcing you to re-implement this by hand for every application you create, Laravel provides convenient services for sending password reset links and secure resetting passwords.  > [!NOTE] > Want to get started fast? Install a Laravel application starter ki
- **Configuration**: Your application's password reset configuration file is stored at config/auth.php. Be sure to review the options available to you in this file. By default, Laravel is configured to use the database password reset driver.  The password reset driver configuration option defines where password reset data will be stored. Laravel includes two drivers:  

## PENNANT (Laravel 12)
- **Laravel Pennant**: - Introduction - Installation - Configuration - Defining Features     - Class Based Features - Checking Features     - Conditional Execution     - The HasFeatures Trait     - Blade Directive     - Middleware     - Intercepting Feature Checks     - In-Memory Cache - Scope     - Specifying the Scope     - Default Scope     - Nullable Scope     - Iden
- **Introduction**: Laravel Pennant is a simple and light-weight feature flag package - without the cruft. Feature flags enable you to incrementally roll out new application features with confidence, A/B test new interface designs, complement a trunk-based development strategy, and much more.  <a name="installation"></a>
- **Installation**: First, install Pennant into your project using the Composer package manager:  Next, you should publish the Pennant configuration and migration files using the vendor:publish Artisan command:  Finally, you should run your application's database migrations. This will create a features table that Pennant uses to power its database driver:  <a name="co

## PINT (Laravel 12)
- **Laravel Pint**: - Introduction - Installation - Running Pint - Configuring Pint     - Presets     - Rules     - Excluding Files / Folders - Continuous Integration     - GitHub Actions  <a name="introduction"></a>
- **Introduction**: Laravel Pint is an opinionated PHP code style fixer for minimalists. Pint is built on top of PHP CS Fixer and makes it simple to ensure that your code style stays clean and consistent.  Pint is automatically installed with all new Laravel applications so you may start using it immediately. By default, Pint does not require any configuration and wil
- **Installation**: Pint is included in recent releases of the Laravel framework, so installation is typically unnecessary. However, for older applications, you may install Laravel Pint via Composer:  <a name="running-pint"></a>

## PRECOGNITION (Laravel 12)
- **Precognition**: - Introduction - Live Validation     - Using Vue     - Using React     - Using Alpine and Blade     - Configuring Axios - Validating Arrays - Customizing Validation Rules - Handling File Uploads - Managing Side-Effects - Testing  <a name="introduction"></a>
- **Introduction**: Laravel Precognition allows you to anticipate the outcome of a future HTTP request. One of the primary use cases of Precognition is the ability to provide "live" validation for your frontend JavaScript application without having to duplicate your application's backend validation rules.  When Laravel receives a "precognitive request", it will execut
- **Using Vue**: Using Laravel Precognition, you can offer live validation experiences to your users without having to duplicate your validation rules in your frontend Vue application. To illustrate how it works, let's build a form for creating new users within our application.  First, to enable Precognition for a route, the HandlePrecognitiveRequests middleware sh

## PROCESSES (Laravel 12)
- **Processes**: - Introduction - Invoking Processes     - Process Options     - Process Output     - Pipelines - Asynchronous Processes     - Process IDs and Signals     - Asynchronous Process Output     - Asynchronous Process Timeouts - Concurrent Processes     - Naming Pool Processes     - Pool Process IDs and Signals - Testing     - Faking Processes     - Fakin
- **Introduction**: Laravel provides an expressive, minimal API around the Symfony Process component, allowing you to conveniently invoke external processes from your Laravel application. Laravel's process features are focused on the most common use cases and a wonderful developer experience.  <a name="invoking-processes"></a>
- **Invoking Processes**: To invoke a process, you may use the run and start methods offered by the Process facade. The run method will invoke a process and wait for the process to finish executing, while the start method is used for asynchronous process execution. We'll examine both approaches within this documentation. First, let's examine how to invoke a basic, synchrono

## PROMPTS (Laravel 12)
- **Prompts**: - Introduction - Installation - Available Prompts     - Text     - Textarea     - Number     - Password     - Confirm     - Select     - Multi-select     - Suggest     - Search     - Multi-search     - Pause     - Autocomplete - Transforming Input Before Validation - Forms - Informational Messages - Tables - Spin - Progress Bar - Task - Stream - Te
- **Introduction**: Laravel Prompts is a PHP package for adding beautiful and user-friendly forms to your command-line applications, with browser-like features including placeholder text and validation.  <img src="https://laravel.com/img/docs/prompts-example.png">  Laravel Prompts is perfect for accepting user input in your Artisan console commands, but it may also be
- **Installation**: Laravel Prompts is already included with the latest release of Laravel.  Laravel Prompts may also be installed in your other PHP projects by using the Composer package manager:  <a name="available-prompts"></a>

## PROVIDERS (Laravel 12)
- **Service Providers**: - Introduction - Writing Service Providers     - The Register Method     - The Boot Method - Registering Providers - Deferred Providers  <a name="introduction"></a>
- **Introduction**: Service providers are the central place of all Laravel application bootstrapping. Your own application, as well as all of Laravel's core services, are bootstrapped via service providers.  But, what do we mean by "bootstrapped"? In general, we mean **registering** things, including registering service container bindings, event listeners, middleware,
- **Writing Service Providers**: All service providers extend the Illuminate\Support\ServiceProvider class. Most service providers contain a register and a boot method. Within the register method, you should **only bind things into the service container**. You should never attempt to register any event listeners, routes, or any other piece of functionality within the register meth

## PULSE (Laravel 12)
- **Laravel Pulse**: - Introduction - Installation     - Configuration - Dashboard     - Authorization     - Customization     - Resolving Users     - Cards - Capturing Entries     - Recorders     - Filtering - Performance     - Using a Different Database     - Redis Ingest     - Sampling     - Trimming     - Handling Pulse Exceptions - Custom Cards     - Card Componen
- **Introduction**: Laravel Pulse delivers at-a-glance insights into your application's performance and usage. With Pulse, you can track down bottlenecks like slow jobs and endpoints, find your most active users, and more.  For in-depth debugging of individual events, check out Laravel Telescope.  <a name="installation"></a>
- **Installation**: > [!WARNING] > Pulse's first-party storage implementation currently requires a MySQL, MariaDB, or PostgreSQL database. If you are using a different database engine, you will need a separate MySQL, MariaDB, or PostgreSQL database for your Pulse data.  You may install Pulse using the Composer package manager:  Next, you should publish the Pulse confi

## QUERIES (Laravel 12)
- **Database: Query Builder**: - Introduction - Running Database Queries     - Chunking Results     - Streaming Results Lazily     - Aggregates - Select Statements - Raw Expressions - Joins - Unions - Basic Where Clauses     - Where Clauses     - Or Where Clauses     - Where Not Clauses     - Where Any / All / None Clauses     - JSON Where Clauses     - Additional Where Clauses 
- **Introduction**: Laravel's database query builder provides a convenient, fluent interface to creating and running database queries. It can be used to perform most database operations in your application and works perfectly with all of Laravel's supported database systems.  The Laravel query builder uses PDO parameter binding to protect your application against SQL 
- **Retrieving All Rows From a Table**: You may use the table method provided by the DB facade to begin a query. The table method returns a fluent query builder instance for the given table, allowing you to chain more constraints onto the query and then finally retrieve the results of the query using the get method:  The get method returns an Illuminate\Support\Collection instance contai

## QUEUES (Laravel 12)
- **Queues**: - Introduction     - Connections vs. Queues     - Driver Notes and Prerequisites - Creating Jobs     - Generating Job Classes     - Class Structure     - Unique Jobs     - Encrypted Jobs - Job Middleware     - Rate Limiting     - Preventing Job Overlaps     - Throttling Exceptions     - Skipping Jobs - Dispatching Jobs     - Delayed Dispatching    
- **Introduction**: While building your web application, you may have some tasks, such as parsing and storing an uploaded CSV file, that take too long to perform during a typical web request. Thankfully, Laravel allows you to easily create queued jobs that may be processed in the background. By moving time intensive tasks to a queue, your application can respond to we
- **Connections vs. Queues**: Before getting started with Laravel queues, it is important to understand the distinction between "connections" and "queues". In your config/queue.php configuration file, there is a connections configuration array. This option defines the connections to backend queue services such as Amazon SQS, Beanstalk, or Redis. However, any given queue connect

## RATE-LIMITING (Laravel 12)
- **Rate Limiting**: - Introduction     - Cache Configuration - Basic Usage     - Manually Incrementing Attempts     - Clearing Attempts  <a name="introduction"></a>
- **Introduction**: Laravel includes a simple to use rate limiting abstraction which, in conjunction with your application's cache, provides an easy way to limit any action during a specified window of time.  > [!NOTE] > If you are interested in rate limiting incoming HTTP requests, please consult the rate limiter middleware documentation.  <a name="cache-configuratio
- **Cache Configuration**: Typically, the rate limiter utilizes your default application cache as defined by the default key within your application's cache configuration file. However, you may specify which cache driver the rate limiter should use by defining a limiter key within your application's cache configuration file:  <a name="basic-usage"></a>

## REDIS (Laravel 12)
- **Redis**: - Introduction - Configuration     - Clusters     - Predis     - PhpRedis - Interacting With Redis     - Transactions     - Pipelining Commands - Pub / Sub  <a name="introduction"></a>
- **Introduction**: Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, and sorted sets.  Before using Redis with Laravel, we encourage you to install and use the PhpRedis PHP extension via PECL. The extension is more complex to install compared to "user-land" PHP pa
- **Configuration**: You may configure your application's Redis settings via the config/database.php configuration file. Within this file, you will see a redis array containing the Redis servers utilized by your application:  Each Redis server defined in your configuration file is required to have a name, host, and a port unless you define a single URL to represent the

## RELEASES (Laravel 12)
- **Release Notes**: - Versioning Scheme - Support Policy - Laravel 12  <a name="versioning-scheme"></a>
- **Versioning Scheme**: Laravel and its other first-party packages follow Semantic Versioning. Major framework releases are released every year (~Q1), while minor and patch releases may be released as often as every week. Minor and patch releases should **never** contain breaking changes.  When referencing the Laravel framework or its components from your application or p
- **Named Arguments**: Named arguments are not covered by Laravel's backwards compatibility guidelines. We may choose to rename function arguments when necessary in order to improve the Laravel codebase. Therefore, using named arguments when calling Laravel methods should be done cautiously and with the understanding that the parameter names may change in the future.  <a

## REQUESTS (Laravel 12)
- **HTTP Requests**: - Introduction - Interacting With The Request     - Accessing the Request     - Request Path, Host, and Method     - Request Headers     - Request IP Address     - Content Negotiation     - PSR-7 Requests - Input     - Retrieving Input     - Input Presence     - Merging Additional Input     - Old Input     - Cookies     - Input Trimming and Normali
- **Introduction**: Laravel's Illuminate\Http\Request class provides an object-oriented way to interact with the current HTTP request being handled by your application as well as retrieve the input, cookies, and files that were submitted with the request.  <a name="interacting-with-the-request"></a>
- **Accessing the Request**: To obtain an instance of the current HTTP request via dependency injection, you should type-hint the Illuminate\Http\Request class on your route closure or controller method. The incoming request instance will automatically be injected by the Laravel service container:  As mentioned, you may also type-hint the Illuminate\Http\Request class on a rou

## RESPONSES (Laravel 12)
- **HTTP Responses**: - Creating Responses     - Attaching Headers to Responses     - Attaching Cookies to Responses     - Cookies and Encryption - Redirects     - Redirecting to Named Routes     - Redirecting to Controller Actions     - Redirecting to External Domains     - Redirecting With Flashed Session Data - Other Response Types     - View Responses     - JSON Res
- **Strings and Arrays**: All routes and controllers should return a response to be sent back to the user's browser. Laravel provides several different ways to return responses. The most basic response is returning a string from a route or controller. The framework will automatically convert the string into a full HTTP response:  In addition to returning strings from your r
- **Response Objects**: Typically, you won't just be returning simple strings or arrays from your route actions. Instead, you will be returning full Illuminate\Http\Response instances or views.  Returning a full Response instance allows you to customize the response's HTTP status code and headers. A Response instance inherits from the Symfony\Component\HttpFoundation\Resp

## REVERB (Laravel 12)
- **Laravel Reverb**: - Introduction - Installation - Configuration     - Application Credentials     - Allowed Origins     - Additional Applications     - SSL - Running the Server     - Debugging     - Restarting - Monitoring - Running Reverb in Production     - Open Files     - Event Loop     - Web Server     - Ports     - Process Management     - Scaling - Events  <a
- **Introduction**: Laravel Reverb brings blazing-fast and scalable real-time WebSocket communication directly to your Laravel application, and provides seamless integration with Laravel's existing suite of event broadcasting tools.  <a name="installation"></a>
- **Installation**: You may install Reverb using the install:broadcasting Artisan command:  <a name="configuration"></a>

## ROUTING (Laravel 12)
- **Routing**: - Basic Routing     - The Default Route Files     - Redirect Routes     - View Routes     - Listing Your Routes     - Routing Customization - Route Parameters     - Required Parameters     - Optional Parameters     - Regular Expression Constraints - Named Routes - Route Groups     - Middleware     - Controllers     - Subdomain Routing     - Route P
- **Basic Routing**: The most basic Laravel routes accept a URI and a closure, providing a very simple and expressive method of defining routes and behavior without complicated routing configuration files:  <a name="the-default-route-files"></a>
- **The Default Route Files**: All Laravel routes are defined in your route files, which are located in the routes directory. These files are automatically loaded by Laravel using the configuration specified in your application's bootstrap/app.php file. The routes/web.php file defines routes that are for your web interface. These routes are assigned the web middleware group, whi

## SAIL (Laravel 12)
- **Laravel Sail**: - Introduction - Installation and Setup     - Installing Sail Into Existing Applications     - Rebuilding Sail Images     - Configuring A Shell Alias - Starting and Stopping Sail - Executing Commands     - Executing PHP Commands     - Executing Composer Commands     - Executing Artisan Commands     - Executing Node / NPM Commands - Interacting With
- **Introduction**: Laravel Sail is a light-weight command-line interface for interacting with Laravel's default Docker development environment. Sail provides a great starting point for building a Laravel application using PHP, MySQL, and Redis without requiring prior Docker experience.  At its heart, Sail is the compose.yaml file and the sail script that is stored at
- **Installation and Setup**: Laravel Sail is automatically installed with all new Laravel applications so you may start using it immediately.  <a name="installing-sail-into-existing-applications"></a>

## SANCTUM (Laravel 12)
- **Laravel Sanctum**: - Introduction     - How it Works - Installation - Configuration     - Overriding Default Models - API Token Authentication     - Issuing API Tokens     - Token Abilities     - Protecting Routes     - Revoking Tokens     - Token Expiration - SPA Authentication     - Configuration     - Authenticating     - Protecting Routes     - Authorizing Privat
- **Introduction**: Laravel Sanctum provides a featherweight authentication system for SPAs (single page applications), mobile applications, and simple, token based APIs. Sanctum allows each user of your application to generate multiple API tokens for their account. These tokens may be granted abilities / scopes which specify which actions the tokens are allowed to pe
- **How it Works**: Laravel Sanctum exists to solve two separate problems. Let's discuss each before digging deeper into the library.  <a name="how-it-works-api-tokens"></a>

## SCHEDULING (Laravel 12)
- **Task Scheduling**: - Introduction - Defining Schedules     - Scheduling Artisan Commands     - Scheduling Queued Jobs     - Scheduling Shell Commands     - Schedule Frequency Options     - Timezones     - Preventing Task Overlaps     - Running Tasks on One Server     - Background Tasks     - Maintenance Mode     - Schedule Groups - Running the Scheduler     - Sub-Min
- **Introduction**: In the past, you may have written a cron configuration entry for each task you needed to schedule on your server. However, this can quickly become a pain because your task schedule is no longer in source control and you must SSH into your server to view your existing cron entries or add additional entries.  Laravel's command scheduler offers a fres
- **Defining Schedules**: You may define all of your scheduled tasks in your application's routes/console.php file. To get started, let's take a look at an example. In this example, we will schedule a closure to be called every day at midnight. Within the closure we will execute a database query to clear a table:  In addition to scheduling using closures, you may also sched

## SCOUT (Laravel 12)
- **Laravel Scout**: - Introduction - Installation     - Queueing - Driver Prerequisites - Configuration     - Configuring Searchable Data - Database / Collection Engines     - Database Engine     - Collection Engine - Third-Party Engine Configuration     - Configuring Model Indexes     - Algolia     - Meilisearch     - Typesense - Third-Party Engine Indexing     - Bat
- **Introduction**: Laravel Scout provides a simple, driver-based solution for adding full-text search to your Eloquent models. Using model observers, Scout will automatically keep your search indexes in sync with your Eloquent records.  Scout ships with a built-in database engine that uses MySQL / PostgreSQL full-text indexes and LIKE clauses to search your existing 
- **Installation**: First, install Scout via the Composer package manager:  After installing Scout, you should publish the Scout configuration file using the vendor:publish Artisan command. This command will publish the scout.php configuration file to your application's config directory:  Finally, add the Laravel\Scout\Searchable trait to the model you would like to m

## SEARCH (Laravel 12)
- **Search**: - Introduction     - Full-Text Search     - Semantic / Vector Search     - Reranking     - Scout Search Engines - Full-Text Search     - Adding Full-Text Indexes     - Running Full-Text Queries - Semantic / Vector Search     - Generating Embeddings     - Storing and Indexing Vectors     - Querying by Similarity - Reranking Results - Laravel Scout  
- **Introduction**: Almost every application needs search. Whether your users are searching a knowledge base for relevant articles, exploring a product catalog, or asking natural-language questions against a corpus of documents, Laravel provides built-in tools to handle each of these scenarios — and you often don't need any external services to get there.  Most applic
- **Full-Text Search**: When you need keyword relevance ranking — where the database scores and sorts results based on how well they match the search terms — Laravel's whereFullText query builder method leverages native full-text indexes on MariaDB, MySQL, and PostgreSQL. Full-text search understands word boundaries and stemming, so a search for "running" can match record

## SEEDING (Laravel 12)
- **Database: Seeding**: - Introduction - Writing Seeders     - Using Model Factories     - Calling Additional Seeders     - Muting Model Events - Running Seeders  <a name="introduction"></a>
- **Introduction**: Laravel includes the ability to seed your database with data using seed classes. All seed classes are stored in the database/seeders directory. By default, a DatabaseSeeder class is defined for you. From this class, you may use the call method to run other seed classes, allowing you to control the seeding order.  > [!NOTE] > Mass assignment protect
- **Writing Seeders**: To generate a seeder, execute the make:seeder Artisan command. All seeders generated by the framework will be placed in the database/seeders directory:  A seeder class only contains one method by default: run. This method is called when the db:seed Artisan command is executed. Within the run method, you may insert data into your database however yo

## SESSION (Laravel 12)
- **HTTP Session**: - Introduction     - Configuration     - Driver Prerequisites - Interacting With the Session     - Retrieving Data     - Storing Data     - Flash Data     - Deleting Data     - Regenerating the Session ID - Session Cache - Session Blocking - Adding Custom Session Drivers     - Implementing the Driver     - Registering the Driver  <a name="introduct
- **Introduction**: Since HTTP driven applications are stateless, sessions provide a way to store information about the user across multiple requests. That user information is typically placed in a persistent store / backend that can be accessed from subsequent requests.  Laravel ships with a variety of session backends that are accessed through an expressive, unified
- **Configuration**: Your application's session configuration file is stored at config/session.php. Be sure to review the options available to you in this file. By default, Laravel is configured to use the database session driver.  The session driver configuration option defines where session data will be stored for each request. Laravel includes a variety of drivers: 

## SOCIALITE (Laravel 12)
- **Laravel Socialite**: - Introduction - Installation - Upgrading Socialite - Configuration - Authentication     - Routing     - Authentication and Storage     - Access Scopes     - Slack Bot Scopes     - Optional Parameters - Retrieving User Details - Testing  <a name="introduction"></a>
- **Introduction**: In addition to typical, form based authentication, Laravel also provides a simple, convenient way to authenticate with OAuth providers using Laravel Socialite. Socialite currently supports authentication via Facebook, X, LinkedIn, Google, GitHub, GitLab, Bitbucket, and Slack.  > [!NOTE] > Adapters for other platforms are available via the community
- **Installation**: To get started with Socialite, use the Composer package manager to add the package to your project's dependencies:  <a name="upgrading-socialite"></a>

## STARTER-KITS (Laravel 12)
- **Starter Kits**: - Introduction - Creating an Application Using a Starter Kit - Available Starter Kits     - React     - Svelte     - Vue     - Livewire - Starter Kit Customization     - React     - Svelte     - Vue     - Livewire - Authentication     - Enabling and Disabling Features     - Customizing User Creation and Password Reset     - Two-Factor Authenticatio
- **Introduction**: To give you a head start building your new Laravel application, we are happy to offer application starter kits. These starter kits give you a head start on building your next Laravel application, and include the routes, controllers, and views you need to register and authenticate your application's users. The starter kits use Laravel Fortify to pro
- **Creating an Application Using a Starter Kit**: To create a new Laravel application using one of our starter kits, you should first install PHP and the Laravel CLI tool. If you already have PHP and Composer installed, you may install the Laravel installer CLI tool via Composer:  Then, create a new Laravel application using the Laravel installer CLI. The Laravel installer will prompt you to selec

## STRINGS (Laravel 12)
- **Introduction**: Laravel includes a variety of functions for manipulating string values. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.  <a name="available-methods"></a>
- **Available Methods**: <style>     .collection-method-list > p {         columns: 10.8em 3; -moz-columns: 10.8em 3; -webkit-columns: 10.8em 3;     }      .collection-method-list a {         display: block;         overflow: hidden;         text-overflow: ellipsis;         white-space: nowrap;     } </style>  <a name="strings-method-list"></a>
- **Strings**: <div class="collection-method-list" markdown="1">  \__ class_basename e preg_replace_array Str::after Str::afterLast Str::apa Str::ascii Str::before Str::beforeLast Str::between Str::betweenFirst Str::camel Str::charAt Str::chopStart Str::chopEnd Str::contains Str::containsAll Str::doesntContain Str::doesntEndWith Str::doesntStartWith Str::deduplic

## STRUCTURE (Laravel 12)
- **Directory Structure**: - Introduction - The Root Directory     - The app Directory     - The bootstrap Directory     - The config Directory     - The database Directory     - The public Directory     - The resources Directory     - The routes Directory     - The storage Directory     - The tests Directory     - The vendor Directory - The App Directory     - The Broadcast
- **Introduction**: The default Laravel application structure is intended to provide a great starting point for both large and small applications. But you are free to organize your application however you like. Laravel imposes almost no restrictions on where any given class is located - as long as Composer can autoload the class.  <a name="the-root-directory"></a>
- **The App Directory**: The app directory contains the core code of your application. We'll explore this directory in more detail soon; however, almost all of the classes in your application will be in this directory.  <a name="the-bootstrap-directory"></a>

## TELESCOPE (Laravel 12)
- **Laravel Telescope**: - Introduction - Installation     - Local Only Installation     - Configuration     - Data Pruning     - Dashboard Authorization - Upgrading Telescope - Filtering     - Entries     - Batches - Tagging - Available Watchers     - Batch Watcher     - Cache Watcher     - Command Watcher     - Dump Watcher     - Event Watcher     - Exception Watcher    
- **Introduction**: Laravel Telescope makes a wonderful companion to your local Laravel development environment. Telescope provides insight into the requests coming into your application, exceptions, log entries, database queries, queued jobs, mail, notifications, cache operations, scheduled tasks, variable dumps, and more.  <img src="https://laravel.com/img/docs/tele
- **Installation**: You may use the Composer package manager to install Telescope into your Laravel project:  After installing Telescope, publish its assets and migrations using the telescope:install Artisan command. After installing Telescope, you should also run the migrate command in order to create the tables needed to store Telescope's data:  Finally, you may acc

## TESTING (Laravel 12)
- **Testing: Getting Started**: - Introduction - Environment - Creating Tests - Running Tests     - Running Tests in Parallel     - Reporting Test Coverage     - Profiling Tests - Configuration Caching  <a name="introduction"></a>
- **Introduction**: Laravel is built with testing in mind. In fact, support for testing with Pest and PHPUnit is included out of the box and a phpunit.xml file is already set up for your application. The framework also ships with convenient helper methods that allow you to expressively test your applications.  By default, your application's tests directory contains tw
- **Environment**: When running tests, Laravel will automatically set the configuration environment to testing because of the environment variables defined in the phpunit.xml file. Laravel also automatically configures the session and cache to the array driver so that no session or cache data will be persisted while testing.  You are free to define other testing envi

## UPGRADE (Laravel 12)
- **High Impact Changes**: <div class="content-list" markdown="1">  - Updating Dependencies - Updating the Laravel Installer  </div>  <a name="medium-impact-changes"></a>
- **Medium Impact Changes**: <div class="content-list" markdown="1">  - Models and UUIDv7  </div>  <a name="low-impact-changes"></a>
- **Low Impact Changes**: <div class="content-list" markdown="1">  - Carbon 3 - Concurrency Result Index Mapping - Container Class Dependency Resolution - Image Validation Now Excludes SVGs - Local Filesystem Disk Default Root Path - Multi-Schema Database Inspecting - Nested Array Request Merging  </div>  <a name="upgrade-12.0"></a>

## URLS (Laravel 12)
- **URL Generation**: - Introduction - The Basics     - Generating URLs     - Accessing the Current URL - URLs for Named Routes     - Signed URLs - URLs for Controller Actions - Fluent URI Objects - Default Values  <a name="introduction"></a>
- **Introduction**: Laravel provides several helpers to assist you in generating URLs for your application. These helpers are primarily helpful when building links in your templates and API responses, or when generating redirect responses to another part of your application.  <a name="the-basics"></a>
- **Generating URLs**: The url helper may be used to generate arbitrary URLs for your application. The generated URL will automatically use the scheme (HTTP or HTTPS) and host from the current request being handled by the application:  To generate a URL with query string parameters, you may use the query method:  Providing query string parameters that already exist in th

## VALET (Laravel 12)
- **Laravel Valet**: - Introduction - Installation     - Upgrading Valet - Serving Sites     - The "Park" Command     - The "Link" Command     - Securing Sites With TLS     - Serving a Default Site     - Per-Site PHP Versions - Sharing Sites     - Sharing Sites on Your Local Network - Site Specific Environment Variables - Proxying Services - Custom Valet Drivers     - 
- **Introduction**: > [!NOTE] > Looking for an even easier way to develop Laravel applications on macOS or Windows? Check out Laravel Herd. Herd includes everything you need to get started with Laravel development, including Valet, PHP, and Composer.  Laravel Valet is a development environment for macOS minimalists. Laravel Valet configures your Mac to always run Ngin
- **Installation**: > [!WARNING] > Valet requires macOS and Homebrew. Before installation, you should make sure that no other programs such as Apache or Nginx are binding to your local machine's port 80.  To get started, you first need to ensure that Homebrew is up to date using the update command:  Next, you should use Homebrew to install PHP:  After installing PHP, 

## VALIDATION (Laravel 12)
- **Validation**: - Introduction - Validation Quickstart     - Defining the Routes     - Creating the Controller     - Writing the Validation Logic     - Displaying the Validation Errors     - Repopulating Forms     - A Note on Optional Fields     - Validation Error Response Format - Form Request Validation     - Creating Form Requests     - Authorizing Form Request
- **Introduction**: Laravel provides several different approaches to validate your application's incoming data. It is most common to use the validate method available on all incoming HTTP requests. However, we will discuss other approaches to validation as well.  Laravel includes a wide variety of convenient validation rules that you may apply to data, even providing 
- **Validation Quickstart**: To learn about Laravel's powerful validation features, let's look at a complete example of validating a form and displaying the error messages back to the user. By reading this high-level overview, you'll be able to gain a good general understanding of how to validate incoming request data using Laravel:  <a name="quick-defining-the-routes"></a>

## VERIFICATION (Laravel 12)
- **Email Verification**: - Introduction     - Model Preparation     - Database Preparation - Routing     - The Email Verification Notice     - The Email Verification Handler     - Resending the Verification Email     - Protecting Routes - Customization - Events  <a name="introduction"></a>
- **Introduction**: Many web applications require users to verify their email addresses before using the application. Rather than forcing you to re-implement this feature by hand for each application you create, Laravel provides convenient built-in services for sending and verifying email verification requests.  > [!NOTE] > Want to get started fast? Install one of the
- **Model Preparation**: Before getting started, verify that your App\Models\User model implements the Illuminate\Contracts\Auth\MustVerifyEmail contract:  Once this interface has been added to your model, newly registered users will automatically be sent an email containing an email verification link. This happens seamlessly because Laravel automatically registers the Ill

## VIEWS (Laravel 12)
- **Views**: - Introduction     - Writing Views in React / Svelte / Vue - Creating and Rendering Views     - Nested View Directories     - Creating the First Available View     - Determining if a View Exists - Passing Data to Views     - Sharing Data With All Views - View Composers     - View Creators - Optimizing Views  <a name="introduction"></a>
- **Introduction**: Of course, it's not practical to return entire HTML documents strings directly from your routes and controllers. Thankfully, views provide a convenient way to place all of our HTML in separate files.  Views separate your controller / application logic from your presentation logic and are stored in the resources/views directory. When using Laravel, 
- **Writing Views in React / Svelte / Vue**: Instead of writing their frontend templates in PHP via Blade, many developers have begun to prefer to write their templates using React, Svelte, or Vue. Laravel makes this painless thanks to Inertia, a library that makes it a cinch to tie your React / Svelte / Vue frontend to your Laravel backend without the typical complexities of building an SPA.

## VITE (Laravel 12)
- **Asset Bundling (Vite)**: - Introduction - Installation & Setup   - Installing Node   - Installing Vite and the Laravel Plugin   - Configuring Vite   - Loading Your Scripts and Styles - Running Vite - Working With JavaScript   - Aliases   - Vue   - React   - Svelte   - Inertia   - URL Processing - Working With Stylesheets - Working With Blade and Routes   - Processing Stati
- **Introduction**: Vite is a modern frontend build tool that provides an extremely fast development environment and bundles your code for production. When building applications with Laravel, you will typically use Vite to bundle your application's CSS and JavaScript files into production-ready assets.  Laravel integrates seamlessly with Vite by providing an official 
- **Installation & Setup**: > [!NOTE] > The following documentation discusses how to manually install and configure the Laravel Vite plugin. However, Laravel's starter kits already include all of this scaffolding and are the fastest way to get started with Laravel and Vite.  <a name="installing-node"></a>

# Laravel 13


## AI-SDK (Laravel 13)
- **Laravel AI SDK**: - Introduction - Installation     - Configuration     - Custom Base URLs     - Provider Support - Agents     - Prompting     - Conversation Context     - Structured Output     - Attachments     - Streaming     - Broadcasting     - Queueing     - Tools     - MCP Tools     - Provider Tools     - Sub-Agents     - Middleware     - Anonymous Agents     
- **Introduction**: The Laravel AI SDK provides a unified, expressive API for interacting with AI providers such as OpenAI, Anthropic, Gemini, and more. With the AI SDK, you can build intelligent agents with tools and structured output, generate images, synthesize and transcribe audio, create vector embeddings, and much more — all using a consistent, Laravel-friendly 
- **Installation**: You can install the Laravel AI SDK via Composer:  Next, you should publish the AI SDK configuration and migration files using the vendor:publish Artisan command:  Finally, you should run your application's database migrations. This will create a agent_conversations and agent_conversation_messages table that the AI SDK uses to power its conversation

## AI (Laravel 13)
- **AI Assisted Development**: - Introduction      - Why Laravel for AI Development?  - Laravel Boost      - Installation      - Available Tools      - AI Guidelines      - Agent Skills      - Documentation Search      - Agents Integration  <a name="introduction"></a>
- **Introduction**: Laravel is uniquely positioned to be the best framework for AI assisted and agentic development. The rise of AI coding agents like Claude Code, OpenCode, Cursor, and GitHub Copilot has transformed how developers write code. These tools can generate entire features, debug complex issues, and refactor code at unprecedented speed - but their effective
- **Why Laravel for AI Development?**: Laravel's opinionated conventions and well-defined structure make it an ideal framework for AI assisted development. When you ask an AI agent to add a controller, it knows exactly where to place it. When you need a new migration, the naming conventions and file locations are predictable. This consistency eliminates the guesswork that often trips up

## ARTISAN (Laravel 13)
- **Artisan Console**: - Introduction     - Tinker (REPL) - Writing Commands     - Generating Commands     - Command Structure     - Closure Commands     - Isolatable Commands - Defining Input Expectations     - Arguments     - Options     - Input Arrays     - Input Descriptions     - Prompting for Missing Input - Command I/O     - Retrieving Input     - Prompting for In
- **Introduction**: Artisan is the command line interface included with Laravel. Artisan exists at the root of your application as the artisan script and provides a number of helpful commands that can assist you while you build your application. To view a list of all available Artisan commands, you may use the list command:  Every command also includes a "help" screen
- **Laravel Sail**: If you are using Laravel Sail as your local development environment, remember to use the sail command line to invoke Artisan commands. Sail will execute your Artisan commands within your application's Docker containers:  <a name="tinker"></a>

## AUTHENTICATION (Laravel 13)
- **Authentication**: - Introduction     - Starter Kits     - Database Considerations     - Ecosystem Overview - Authentication Quickstart     - Install a Starter Kit     - Retrieving the Authenticated User     - Protecting Routes     - Login Throttling - Manually Authenticating Users     - Remembering Users     - Other Authentication Methods - HTTP Basic Authentication
- **Introduction**: Many web applications provide a way for their users to authenticate with the application and "login". Implementing this feature in web applications can be a complex and potentially risky endeavor. For this reason, Laravel strives to give you the tools you need to implement authentication quickly, securely, and easily.  At its core, Laravel's authen
- **Starter Kits**: Want to get started fast? Install a Laravel application starter kit in a fresh Laravel application. After migrating your database, navigate your browser to /register or any other URL that is assigned to your application. The starter kits will take care of scaffolding your entire authentication system!  **Even if you choose not to use a starter kit 

## AUTHORIZATION (Laravel 13)
- **Authorization**: - Introduction - Gates     - Writing Gates     - Authorizing Actions     - Gate Responses     - Intercepting Gate Checks     - Inline Authorization - Creating Policies     - Generating Policies     - Registering Policies - Writing Policies     - Policy Methods     - Policy Responses     - Methods Without Models     - Guest Users     - Policy Filter
- **Introduction**: In addition to providing built-in authentication services, Laravel also provides a simple way to authorize user actions against a given resource. For example, even though a user is authenticated, they may not be authorized to update or delete certain Eloquent models or database records managed by your application. Laravel's authorization features p
- **Writing Gates**: > [!WARNING] > Gates are a great way to learn the basics of Laravel's authorization features; however, when building robust Laravel applications you should consider using policies to organize your authorization rules.  Gates are simply closures that determine if a user is authorized to perform a given action. Typically, gates are defined within the

## BILLING (Laravel 13)
- **Laravel Cashier (Stripe)**: - Introduction - Upgrading Cashier - Installation - Configuration     - Billable Model     - API Keys     - Currency Configuration     - Tax Configuration     - Logging     - Using Custom Models - Quickstart     - Selling Products     - Selling Subscriptions - Customers     - Retrieving Customers     - Creating Customers     - Updating Customers   
- **Introduction**: Laravel Cashier Stripe provides an expressive, fluent interface to Stripe's subscription billing services. It handles almost all of the boilerplate subscription billing code you are dreading writing. In addition to basic subscription management, Cashier can handle coupons, swapping subscription, subscription "quantities", cancellation grace periods
- **Upgrading Cashier**: When upgrading to a new version of Cashier, it's important that you carefully review the upgrade guide.  > [!WARNING] > To prevent breaking changes, Cashier uses a fixed Stripe API version. Cashier 16 utilizes Stripe API version 2025-06-30.basil. The Stripe API version will be updated on minor releases in order to make use of new Stripe features an

## BLADE (Laravel 13)
- **Blade Templates**: - Introduction     - Supercharging Blade With Livewire - Displaying Data     - HTML Entity Encoding     - Blade and JavaScript Frameworks - Blade Directives     - If Statements     - Switch Statements     - Loops     - The Loop Variable     - Conditional Classes     - Additional Attributes     - Including Subviews     - The @once Directive     - Ra
- **Introduction**: Blade is the simple, yet powerful templating engine that is included with Laravel. Unlike some PHP templating engines, Blade does not restrict you from using plain PHP code in your templates. In fact, all Blade templates are compiled into plain PHP code and cached until they are modified, meaning Blade adds essentially zero overhead to your applica
- **Supercharging Blade With Livewire**: Want to take your Blade templates to the next level and build dynamic interfaces with ease? Check out Laravel Livewire. Livewire allows you to write Blade components that are augmented with dynamic functionality that would typically only be possible via frontend frameworks like React, Svelte, or Vue, providing a great approach to building modern, r

## BOOST (Laravel 13)
- **Laravel Boost**: - Introduction - Installation     - Set Up Your Agents     - Keeping Boost Resources Updated - MCP Server     - Available MCP Tools     - Manually Registering the MCP Server - AI Guidelines     - Available AI Guidelines     - Adding Custom AI Guidelines     - Overriding Boost AI Guidelines     - Third-Party Package AI Guidelines - Agent Skills     
- **Introduction**: Laravel Boost accelerates AI-assisted development by providing the essential guidelines and agent skills that help AI agents write high-quality Laravel applications that adhere to Laravel best practices.  Boost also provides a powerful Laravel ecosystem documentation API that combines a built-in MCP tool with an extensive knowledge base containing 
- **Installation**: Laravel Boost can be installed via Composer:  Next, install the MCP server and coding guidelines:  The boost:install command will generate the relevant agent guideline and skill files for the coding agents you selected during the installation process.  Once Laravel Boost has been installed, you're ready to start coding with Cursor, Claude Code, or 

## BROADCASTING (Laravel 13)
- **Broadcasting**: - Introduction - Quickstart - Server Side Installation     - Reverb     - Pusher Channels     - Ably - Client Side Installation     - Reverb     - Pusher Channels     - Ably - Concept Overview     - Using an Example Application - Defining Broadcast Events     - Broadcast Name     - Broadcast Data     - Broadcast Queue     - Broadcast Conditions    
- **Introduction**: In many modern web applications, WebSockets are used to implement realtime, live-updating user interfaces. When some data is updated on the server, a message is typically sent over a WebSocket connection to be handled by the client. WebSockets provide a more efficient alternative to continually polling your application's server for data changes tha
- **Supported Drivers**: By default, Laravel includes three server-side broadcasting drivers for you to choose from: Laravel Reverb, Pusher Channels, and Ably.  > [!NOTE] > Before diving into event broadcasting, make sure you have read Laravel's documentation on events and listeners.  <a name="quickstart"></a>

## CACHE (Laravel 13)
- **Cache**: - Introduction - Configuration     - Driver Prerequisites - Cache Usage     - Obtaining a Cache Instance     - Retrieving Items From the Cache     - Storing Items in the Cache     - Extending Item Lifetime     - Removing Items From the Cache     - Cache Memoization     - The Cache Helper - Cache Tags - Atomic Locks     - Managing Locks     - Managi
- **Introduction**: Some of the data retrieval or processing tasks performed by your application could be CPU intensive or take several seconds to complete. When this is the case, it is common to cache the retrieved data for a time so it can be retrieved quickly on subsequent requests for the same data. The cached data is usually stored in a very fast data store such 
- **Configuration**: Your application's cache configuration file is located at config/cache.php. In this file, you may specify which cache store you would like to be used by default throughout your application. Laravel supports popular caching backends like Memcached, Redis, DynamoDB, relational databases, and filesystem disks out of the box. In addition, a file based 

## CASHIER-PADDLE (Laravel 13)
- **Laravel Cashier (Paddle)**: - Introduction - Upgrading Cashier - Installation     - Paddle Sandbox - Configuration     - Billable Model     - API Keys     - Paddle JS     - Currency Configuration     - Overriding Default Models - Quickstart     - Selling Products     - Selling Subscriptions - Checkout Sessions     - Overlay Checkout     - Inline Checkout     - Guest Checkouts
- **Introduction**: > [!WARNING] > This documentation is for Cashier Paddle 2.x's integration with Paddle Billing. If you're still using Paddle Classic, you should use Cashier Paddle 1.x.  Laravel Cashier Paddle provides an expressive, fluent interface to Paddle's subscription billing services. It handles almost all of the boilerplate subscription billing code you are
- **Upgrading Cashier**: When upgrading to a new version of Cashier, it's important that you carefully review the upgrade guide.  <a name="installation"></a>

## COLLECTIONS (Laravel 13)
- **Collections**: - Introduction     - Creating Collections     - Extending Collections - Available Methods - Higher Order Messages - Lazy Collections     - Introduction     - Creating Lazy Collections     - The Enumerable Contract     - Lazy Collection Methods  <a name="introduction"></a>
- **Introduction**: The Illuminate\Support\Collection class provides a fluent, convenient wrapper for working with arrays of data. For example, check out the following code. We'll use the collect helper to create a new collection instance from the array, run the strtoupper function on each element, and then remove all empty elements:  As you can see, the Collection cl
- **Creating Collections**: As mentioned above, the collect helper returns a new Illuminate\Support\Collection instance for the given array. So, creating a collection is as simple as:  You may also create a collection using the make and fromJson methods.  > [!NOTE] > The results of Eloquent queries are always returned as Collection instances.  <a name="extending-collections">

## CONCURRENCY (Laravel 13)
- **Concurrency**: - Introduction - Running Concurrent Tasks     - Named Results     - Task Timeouts - Deferring Concurrent Tasks  <a name="introduction"></a>
- **Introduction**: Sometimes you may need to execute several slow tasks which do not depend on one another. In many cases, significant performance improvements can be realized by executing the tasks concurrently. Laravel's Concurrency facade provides a simple, convenient API for executing closures concurrently.  <a name="how-it-works"></a>
- **How it Works**: Laravel achieves concurrency by serializing the given closures and dispatching them to a hidden Artisan CLI command, which unserializes the closures and invokes it within its own PHP process. After the closure has been invoked, the resulting value is serialized back to the parent process.  The Concurrency facade supports three drivers: process (the

## CONFIGURATION (Laravel 13)
- **Configuration**: - Introduction - Environment Configuration     - Environment Variable Types     - Retrieving Environment Configuration     - Determining the Current Environment     - Encrypting Environment Files - Accessing Configuration Values - Configuration Caching - Configuration Publishing - Debug Mode - Maintenance Mode  <a name="introduction"></a>
- **Introduction**: All of the configuration files for the Laravel framework are stored in the config directory. Each option is documented, so feel free to look through the files and get familiar with the options available to you.  These configuration files allow you to configure things like your database connection information, your mail server information, as well a
- **The `about` Command**: Laravel can display an overview of your application's configuration, drivers, and environment via the about Artisan command.  If you're only interested in a particular section of the application overview output, you may filter for that section using the --only option:  Or, to explore a specific configuration file's values in detail, you may use the

## CONSOLE-TESTS (Laravel 13)
- **Console Tests**: - Introduction - Success / Failure Expectations - Input / Output Expectations - Console Events  <a name="introduction"></a>
- **Introduction**: In addition to simplifying HTTP testing, Laravel provides a simple API for testing your application's custom console commands.  <a name="success-failure-expectations"></a>
- **Success / Failure Expectations**: To get started, let's explore how to make assertions regarding an Artisan command's exit code. To accomplish this, we will use the artisan method to invoke an Artisan command from our test. Then, we will use the assertExitCode method to assert that the command completed with a given exit code:  You may use the assertNotExitCode method to assert tha

## CONTAINER (Laravel 13)
- **Service Container**: - Introduction     - Zero Configuration Resolution     - When to Utilize the Container - Binding     - Binding Basics     - Binding Interfaces to Implementations     - Contextual Binding     - Contextual Attributes     - Binding Primitives     - Binding Typed Variadics     - Tagging     - Extending Bindings - Resolving     - The Make Method     - A
- **Introduction**: The Laravel service container is a powerful tool for managing class dependencies and performing dependency injection. Dependency injection is a fancy phrase that essentially means this: class dependencies are "injected" into the class via the constructor or, in some cases, "setter" methods.  Let's look at a simple example:  In this example, the Pod
- **Zero Configuration Resolution**: If a class has no dependencies or only depends on other concrete classes (not interfaces), the container does not need to be instructed on how to resolve that class. For example, you may place the following code in your routes/web.php file:  In this example, hitting your application's / route will automatically resolve the Service class and inject 

## CONTEXT (Laravel 13)
- **Context**: - Introduction     - How it Works - Capturing Context     - Stacks - Retrieving Context     - Determining Item Existence - Removing Context - Hidden Context - Events     - Dehydrating     - Hydrated  <a name="introduction"></a>
- **Introduction**: Laravel's "context" capabilities enable you to capture, retrieve, and share information throughout requests, jobs, and commands executing within your application. This captured information is also included in logs written by your application, giving you deeper insight into the surrounding code execution history that occurred before a log entry was 
- **How it Works**: The best way to understand Laravel's context capabilities is to see it in action using  the built-in logging features. To get started, you may add information to the context using the Context facade. In this example, we will use a middleware to add the request URL and a unique trace ID to the context on every incoming request:  Information added to

## CONTRACTS (Laravel 13)
- **Contracts**: - Introduction     - Contracts vs. Facades - When to Use Contracts - How to Use Contracts - Contract Reference  <a name="introduction"></a>
- **Introduction**: Laravel's "contracts" are a set of interfaces that define the core services provided by the framework. For example, an Illuminate\Contracts\Queue\Queue contract defines the methods needed for queueing jobs, while the Illuminate\Contracts\Mail\Mailer contract defines the methods needed for sending e-mail.  Each contract has a corresponding implement
- **Contracts vs. Facades**: Laravel's facades and helper functions provide a simple way of utilizing Laravel's services without needing to type-hint and resolve contracts out of the service container. In most cases, each facade has an equivalent contract.  Unlike facades, which do not require you to require them in your class' constructor, contracts allow you to define explic

## CONTROLLERS (Laravel 13)
- **Controllers**: - Introduction - Writing Controllers     - Basic Controllers     - Single Action Controllers - Controller Middleware     - Middleware Attributes     - Authorization Attributes - Resource Controllers     - Partial Resource Routes     - Nested Resources     - Naming Resource Routes     - Naming Resource Route Parameters     - Scoping Resource Routes 
- **Introduction**: Instead of defining all of your request handling logic as closures in your route files, you may wish to organize this behavior using "controller" classes. Controllers can group related request handling logic into a single class. For example, a UserController class might handle all incoming requests related to users, including showing, creating, upd
- **Basic Controllers**: To quickly generate a new controller, you may run the make:controller Artisan command. By default, all of the controllers for your application are stored in the app/Http/Controllers directory:  Let's take a look at an example of a basic controller. A controller may have any number of public methods which will respond to incoming HTTP requests:  Onc

## CSRF (Laravel 13)
- **CSRF Protection**: - Introduction - Preventing CSRF Requests     - Origin Verification     - Excluding URIs - X-CSRF-Token - X-XSRF-Token  <a name="csrf-introduction"></a>
- **Introduction**: Cross-site request forgeries are a type of malicious exploit whereby unauthorized commands are performed on behalf of an authenticated user. Thankfully, Laravel makes it easy to protect your application from cross-site request forgery (CSRF) attacks.  <a name="csrf-explanation"></a>
- **An Explanation of the Vulnerability**: In case you're not familiar with cross-site request forgeries, let's discuss an example of how this vulnerability can be exploited. Imagine your application has a /user/email route that accepts a POST request to change the authenticated user's email address. Most likely, this route expects an email input field to contain the email address the user 

## DATABASE-TESTING (Laravel 13)
- **Database Testing**: - Introduction     - Resetting the Database After Each Test - Model Factories - Running Seeders - Available Assertions  <a name="introduction"></a>
- **Introduction**: Laravel provides a variety of helpful tools and assertions to make it easier to test your database driven applications. In addition, Laravel model factories and seeders make it painless to create test database records using your application's Eloquent models and relationships. We'll discuss all of these powerful features in the following documentat
- **Resetting the Database After Each Test**: Before proceeding much further, let's discuss how to reset your database after each of your tests so that data from a previous test does not interfere with subsequent tests. Laravel's included Illuminate\Foundation\Testing\RefreshDatabase trait will take care of this for you. Simply use the trait on your test class:  The Illuminate\Foundation\Testi

## DATABASE (Laravel 13)
- **Database: Getting Started**: - Introduction     - Configuration     - Read and Write Connections     - Pooled PostgreSQL Connections - Running SQL Queries     - Using Multiple Database Connections     - Listening for Query Events     - Monitoring Cumulative Query Time - Database Transactions - Connecting to the Database CLI - Inspecting Your Databases - Monitoring Your Databas
- **Introduction**: Almost every modern web application interacts with a database. Laravel makes interacting with databases extremely simple across a variety of supported databases using raw SQL, a fluent query builder, and the Eloquent ORM. Currently, Laravel provides first-party support for five databases:  <div class="content-list" markdown="1">  - MariaDB 10.3+ (V
- **Configuration**: The configuration for Laravel's database services is located in your application's config/database.php configuration file. In this file, you may define all of your database connections, as well as specify which connection should be used by default. Most of the configuration options within this file are driven by the values of your application's env

## DEPLOYMENT (Laravel 13)
- **Deployment**: - Introduction - Server Requirements - Server Configuration     - Nginx     - FrankenPHP     - Directory Permissions - Optimization     - Caching Configuration     - Caching Events     - Caching Routes     - Caching Views - Reloading Services - Debug Mode - The Health Route - Deploying With Laravel Cloud or Forge  <a name="introduction"></a>
- **Introduction**: When you're ready to deploy your Laravel application to production, there are some important things you can do to make sure your application is running as efficiently as possible. In this document, we'll cover some great starting points for making sure your Laravel application is deployed properly.  <a name="server-requirements"></a>
- **Server Requirements**: The Laravel framework has a few system requirements. You should ensure that your web server has the following minimum PHP version and extensions:  <div class="content-list" markdown="1">  - PHP >= 8.3 - Ctype PHP Extension - cURL PHP Extension - DOM PHP Extension - Fileinfo PHP Extension - Filter PHP Extension - Hash PHP Extension - Mbstring PHP Ex

## DUSK (Laravel 13)
- **Laravel Dusk**: - Introduction - Installation     - Managing ChromeDriver Installations     - Using Other Browsers - Getting Started     - Generating Tests     - Resetting the Database After Each Test     - Running Tests     - Environment Handling - Browser Basics     - Creating Browsers     - Navigation     - Resizing Browser Windows     - Browser Macros     - Au
- **Introduction**: > [!WARNING] > Pest 4 now includes automated browser testing which offers significant performance and usability improvements compared to Laravel Dusk. For new projects, we recommend using Pest for browser testing.  Laravel Dusk provides an expressive, easy-to-use browser automation and testing API. By default, Dusk does not require you to install J
- **Installation**: To get started, you should install Google Chrome and add the laravel/dusk Composer dependency to your project:  > [!WARNING] > If you are manually registering Dusk's service provider, you should **never** register it in your production environment, as doing so could lead to arbitrary users being able to authenticate with your application.  After in

## ELOQUENT-COLLECTIONS (Laravel 13)
- **Eloquent: Collections**: - Introduction - Available Methods - Custom Collections  <a name="introduction"></a>
- **Introduction**: All Eloquent methods that return more than one model result will return instances of the Illuminate\Database\Eloquent\Collection class, including results retrieved via the get method or accessed via a relationship. The Eloquent collection object extends Laravel's base collection, so it naturally inherits dozens of methods used to fluently work with
- **Eloquent Collection Conversion**: While most Eloquent collection methods return a new instance of an Eloquent collection, the collapse, flatten, flip, keys, pluck, and zip methods return a base collection instance. Likewise, if a map operation returns a collection that does not contain any Eloquent models, it will be converted to a base collection instance.  <a name="available-meth

## ELOQUENT-FACTORIES (Laravel 13)
- **Eloquent: Factories**: - Introduction - Defining Model Factories     - Generating Factories     - Factory States     - Factory Callbacks - Creating Models Using Factories     - Instantiating Models     - Persisting Models     - Sequences - Factory Relationships     - Has Many Relationships     - Belongs To Relationships     - Many to Many Relationships     - Polymorphic 
- **Introduction**: When testing your application or seeding your database, you may need to insert a few records into your database. Instead of manually specifying the value of each column, Laravel allows you to define a set of default attributes for each of your Eloquent models using model factories.  To see an example of how to write a factory, take a look at the da
- **Generating Factories**: To create a factory, execute the make:factory Artisan command:  The new factory class will be placed in your database/factories directory.  <a name="factory-and-model-discovery-conventions"></a>

## ELOQUENT-MUTATORS (Laravel 13)
- **Eloquent: Mutators & Casting**: - Introduction - Accessors and Mutators     - Defining an Accessor     - Defining a Mutator - Attribute Casting     - Array and JSON Casting     - Binary Casting     - Date Casting     - Enum Casting     - Encrypted Casting     - Query Time Casting - Custom Casts     - Value Object Casting     - Array / JSON Serialization     - Inbound Casting     
- **Introduction**: Accessors, mutators, and attribute casting allow you to transform Eloquent attribute values when you retrieve or set them on model instances. For example, you may want to use the Laravel encrypter to encrypt a value while it is stored in the database, and then automatically decrypt the attribute when you access it on an Eloquent model. Or, you may 
- **Defining an Accessor**: An accessor transforms an Eloquent attribute value when it is accessed. To define an accessor, create a protected method on your model to represent the accessible attribute. This method name should correspond to the "camel case" representation of the true underlying model attribute / database column when applicable.  In this example, we'll define a

## ELOQUENT-RELATIONSHIPS (Laravel 13)
- **Eloquent: Relationships**: - Introduction - Defining Relationships     - One to One / Has One     - One to Many / Has Many     - One to Many (Inverse) / Belongs To     - Has One of Many     - Has One Through     - Has Many Through - Scoped Relationships - Many to Many Relationships     - Retrieving Intermediate Table Columns     - Filtering Queries via Intermediate Table Col
- **Introduction**: Database tables are often related to one another. For example, a blog post may have many comments or an order could be related to the user who placed it. Eloquent makes managing and working with these relationships easy, and supports a variety of common relationships:  <div class="content-list" markdown="1">  - One To One - One To Many - Many To Ma
- **Defining Relationships**: Eloquent relationships are defined as methods on your Eloquent model classes. Since relationships also serve as powerful query builders, defining relationships as methods provides powerful method chaining and querying capabilities. For example, we may chain additional query constraints on this posts relationship:  But, before diving too deep into u

## ELOQUENT-RESOURCES (Laravel 13)
- **Eloquent: API Resources**: - Introduction - Generating Resources - Concept Overview     - Resource Collections - Writing Resources     - Data Wrapping     - Pagination     - Conditional Attributes     - Conditional Relationships     - Adding Meta Data - JSON:API Resources     - Generating JSON:API Resources     - Defining Attributes     - Defining Relationships     - Resourc
- **Introduction**: When building an API, you may need a transformation layer that sits between your Eloquent models and the JSON responses that are actually returned to your application's users. For example, you may wish to display certain attributes for a subset of users and not others, or you may wish to always include certain relationships in the JSON representati
- **Generating Resources**: To generate a resource class, you may use the make:resource Artisan command. By default, resources will be placed in the app/Http/Resources directory of your application. Resources extend the Illuminate\Http\Resources\Json\JsonResource class:  <a name="generating-resource-collections"></a>

## ELOQUENT-SERIALIZATION (Laravel 13)
- **Eloquent: Serialization**: - Introduction - Serializing Models and Collections     - Serializing to Arrays     - Serializing to JSON - Hiding Attributes From JSON - Appending Values to JSON - Date Serialization  <a name="introduction"></a>
- **Introduction**: When building APIs using Laravel, you will often need to convert your models and relationships to arrays or JSON. Eloquent includes convenient methods for making these conversions, as well as controlling which attributes are included in the serialized representation of your models.  > [!NOTE] > For an even more robust way of handling Eloquent model
- **Serializing to Arrays**: To convert a model and its loaded relationships to an array, you should use the toArray method. This method is recursive, so all attributes and all relations (including the relations of relations) will be converted to arrays:  The attributesToArray method may be used to convert a model's attributes to an array but not its relationships:  You may al

## ELOQUENT (Laravel 13)
- **Eloquent: Getting Started**: - Introduction - Generating Model Classes - Eloquent Model Conventions     - Table Names     - Primary Keys     - UUID and ULID Keys     - Timestamps     - Database Connections     - Default Attribute Values     - Configuring Eloquent Strictness - Retrieving Models     - Collections     - Chunking Results     - Chunk Using Lazy Collections     - Cu
- **Introduction**: Laravel includes Eloquent, an object-relational mapper (ORM) that makes it enjoyable to interact with your database. When using Eloquent, each database table has a corresponding "Model" that is used to interact with that table. In addition to retrieving records from the database table, Eloquent models allow you to insert, update, and delete records
- **Generating Model Classes**: To get started, let's create an Eloquent model. Models typically live in the app\Models directory and extend the Illuminate\Database\Eloquent\Model class. You may use the make:model Artisan command to generate a new model:  If you would like to generate a database migration when you generate the model, you may use the --migration or -m option:  You

## ENCRYPTION (Laravel 13)
- **Encryption**: - Introduction - Configuration     - Gracefully Rotating Encryption Keys - Using the Encrypter  <a name="introduction"></a>
- **Introduction**: Laravel's encryption services provide a simple, convenient interface for encrypting and decrypting text via OpenSSL using AES-256 and AES-128 encryption. All of Laravel's encrypted values are signed using a message authentication code (MAC) so that their underlying value cannot be modified or tampered with once encrypted.  <a name="configuration"><
- **Configuration**: Before using Laravel's encrypter, you must set the key configuration option in your config/app.php configuration file. This configuration value is driven by the APP_KEY environment variable. You should use the php artisan key:generate command to generate this variable's value since the key:generate command will use PHP's secure random bytes generat

## ENVOY (Laravel 13)
- **Laravel Envoy**: - Introduction - Installation - Writing Tasks     - Defining Tasks     - Multiple Servers     - Setup     - Variables     - Stories     - Hooks - Running Tasks     - Confirming Task Execution - Notifications     - Slack     - Discord     - Telegram     - Microsoft Teams  <a name="introduction"></a>
- **Introduction**: Laravel Envoy is a tool for executing common tasks you run on your remote servers. Using Blade style syntax, you can easily setup tasks for deployment, Artisan commands, and more. Currently, Envoy only supports the Mac and Linux operating systems. However, Windows support is achievable using WSL2.  <a name="installation"></a>
- **Installation**: First, install Envoy into your project using the Composer package manager:  Once Envoy has been installed, the Envoy binary will be available in your application's vendor/bin directory:  <a name="writing-tasks"></a>

## ERRORS (Laravel 13)
- **Error Handling**: - Introduction - Configuration - Handling Exceptions     - Reporting Exceptions     - Exception Log Levels     - Ignoring Exceptions by Type     - Rendering Exceptions     - Reportable and Renderable Exceptions - Throttling Reported Exceptions - HTTP Exceptions     - Custom HTTP Error Pages  <a name="introduction"></a>
- **Introduction**: When you start a new Laravel project, error and exception handling is already configured for you; however, at any point, you may use the withExceptions method in your application's bootstrap/app.php to manage how exceptions are reported and rendered by your application.  The $exceptions object provided to the withExceptions closure is an instance o
- **Configuration**: The debug option in your config/app.php configuration file determines how much information about an error is actually displayed to the user. By default, this option is set to respect the value of the APP_DEBUG environment variable, which is stored in your .env file.  During local development, you should set the APP_DEBUG environment variable to tru

## EVENTS (Laravel 13)
- **Events**: - Introduction - Generating Events and Listeners - Registering Events and Listeners     - Event Discovery     - Manually Registering Events     - Closure Listeners - Defining Events - Defining Listeners - Queued Event Listeners     - Manually Interacting With the Queue     - Queued Event Listeners and Database Transactions     - Queued Listener Mid
- **Introduction**: Laravel's events provide a simple observer pattern implementation, allowing you to subscribe and listen for various events that occur within your application. Event classes are typically stored in the app/Events directory, while their listeners are stored in app/Listeners. Don't worry if you don't see these directories in your application as they w
- **Generating Events and Listeners**: To quickly generate events and listeners, you may use the make:event and make:listener Artisan commands:  For convenience, you may also invoke the make:event and make:listener Artisan commands without additional arguments. When you do so, Laravel will automatically prompt you for the class name and, when creating a listener, the event it should lis

## FACADES (Laravel 13)
- **Facades**: - Introduction - When to Utilize Facades     - Facades vs. Dependency Injection     - Facades vs. Helper Functions - How Facades Work - Real-Time Facades - Facade Class Reference  <a name="introduction"></a>
- **Introduction**: Throughout the Laravel documentation, you will see examples of code that interacts with Laravel's features via "facades". Facades provide a "static" interface to classes that are available in the application's service container. Laravel ships with many facades which provide access to almost all of Laravel's features.  Laravel facades serve as "stat
- **Helper Functions**: To complement facades, Laravel offers a variety of global "helper functions" that make it even easier to interact with common Laravel features. Some of the common helper functions you may interact with are view, response, url, config, and more. Each helper function offered by Laravel is documented with their corresponding feature; however, a comple

## FILESYSTEM (Laravel 13)
- **File Storage**: - Introduction - Configuration     - The Local Driver     - The Public Disk     - Driver Prerequisites     - Scoped and Read-Only Filesystems     - Amazon S3 Compatible Filesystems - Obtaining Disk Instances     - On-Demand Disks - Retrieving Files     - Downloading Files     - File URLs     - Temporary URLs     - File Metadata - Storing Files     
- **Introduction**: Laravel provides a powerful filesystem abstraction thanks to the wonderful Flysystem PHP package by Frank de Jonge. The Laravel Flysystem integration provides simple drivers for working with local filesystems, SFTP, and Amazon S3. Even better, it's amazingly simple to switch between these storage options between your local development machine and p
- **Configuration**: Laravel's filesystem configuration file is located at config/filesystems.php. Within this file, you may configure all of your filesystem "disks". Each disk represents a particular storage driver and storage location. Example configurations for each supported driver are included in the configuration file so you can modify the configuration to reflec

## FOLIO (Laravel 13)
- **Laravel Folio**: - Introduction - Installation     - Page Paths / URIs     - Subdomain Routing - Creating Routes     - Nested Routes     - Index Routes - Route Parameters - Route Model Binding     - Soft Deleted Models - Render Hooks - Named Routes - Middleware - Route Caching  <a name="introduction"></a>
- **Introduction**: Laravel Folio is a powerful page based router designed to simplify routing in Laravel applications. With Laravel Folio, generating a route becomes as effortless as creating a Blade template within your application's resources/views/pages directory.  For example, to create a page that is accessible at the /greeting URL, just create a greeting.blade.
- **Installation**: To get started, install Folio into your project using the Composer package manager:  After installing Folio, you may execute the folio:install Artisan command, which will install Folio's service provider into your application. This service provider registers the directory where Folio will search for routes / pages:  <a name="page-paths-uris"></a>

## FORTIFY (Laravel 13)
- **Laravel Fortify**: - Introduction     - What is Fortify?     - When Should I Use Fortify? - Installation     - Fortify Features     - Disabling Views - Authentication     - Customizing User Authentication     - Customizing the Authentication Pipeline     - Customizing Redirects - Two-Factor Authentication     - Enabling Two-Factor Authentication     - Authenticating 
- **Introduction**: Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel. Fortify registers the routes and controllers needed to implement all of Laravel's authentication features, including login, registration, password reset, email verification, and more. After installing Fortify, you may run the route:list Artisan command to see 
- **What is Fortify?**: As mentioned previously, Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel. Fortify registers the routes and controllers needed to implement all of Laravel's authentication features, including login, registration, password reset, email verification, and more.  **You are not required to use Fortify in order to 

## FRONTEND (Laravel 13)
- **Frontend**: - Introduction - Using PHP     - PHP and Blade     - Livewire     - Starter Kits - Using React, Svelte, or Vue     - Inertia     - Starter Kits - Bundling Assets  <a name="introduction"></a>
- **Introduction**: Laravel is a backend framework that provides all of the features you need to build modern web applications, such as routing, validation, caching, queues, file storage, and more. However, we believe it's important to offer developers a beautiful full-stack experience, including powerful approaches for building your application's frontend.  There are
- **PHP and Blade**: In the past, most PHP applications rendered HTML to the browser using simple HTML templates interspersed with PHP echo statements which render data that was retrieved from a database during the request:  In Laravel, this approach to rendering HTML can still be achieved using views and Blade. Blade is an extremely light-weight templating language th

## HASHING (Laravel 13)
- **Hashing**: - Introduction - Configuration - Basic Usage     - Hashing Passwords     - Verifying That a Password Matches a Hash     - Determining if a Password Needs to be Rehashed - Hash Algorithm Verification  <a name="introduction"></a>
- **Introduction**: The Laravel Hash facade provides secure Bcrypt and Argon2 hashing for storing user passwords. If you are using one of the Laravel application starter kits, Bcrypt will be used for registration and authentication by default.  Bcrypt is a great choice for hashing passwords because its "work factor" is adjustable, which means that the time it takes to
- **Configuration**: By default, Laravel uses the bcrypt hashing driver when hashing data. However, several other hashing drivers are supported, including argon and argon2id.  You may specify your application's hashing driver using the HASH_DRIVER environment variable. But, if you want to customize all of Laravel's hashing driver options, you should publish the complet

## HELPERS (Laravel 13)
- **Helpers**: - Introduction - Available Methods - Other Utilities     - Benchmarking     - Dates and Time     - Deferred Functions     - Lottery     - Pipeline     - Sleep     - Timebox     - URI  <a name="introduction"></a>
- **Introduction**: Laravel includes a variety of global "helper" PHP functions. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.  <a name="available-methods"></a>
- **Available Methods**: <style>     .collection-method-list > p {         columns: 10.8em 3; -moz-columns: 10.8em 3; -webkit-columns: 10.8em 3;     }      .collection-method-list a {         display: block;         overflow: hidden;         text-overflow: ellipsis;         white-space: nowrap;     } </style>  <a name="arrays-and-objects-method-list"></a>

## HOMESTEAD (Laravel 13)
- **Laravel Homestead**: - Introduction - Installation and Setup     - First Steps     - Configuring Homestead     - Configuring Nginx Sites     - Configuring Services     - Launching the Vagrant Box     - Per Project Installation     - Installing Optional Features     - Aliases - Updating Homestead - Daily Usage     - Connecting via SSH     - Adding Additional Sites     -
- **Introduction**: > [!WARNING] > Laravel Homestead is a legacy package that is no longer actively maintained. Laravel Sail may be used as a modern alternative.  Laravel strives to make the entire PHP development experience delightful, including your local development environment. Laravel Homestead is an official, pre-packaged Vagrant box that provides you a wonderfu
- **Included Software**: <style>     #software-list > ul {         column-count: 2; -moz-column-count: 2; -webkit-column-count: 2;         column-gap: 5em; -moz-column-gap: 5em; -webkit-column-gap: 5em;         line-height: 1.9;     } </style>  <div id="software-list" markdown="1">  - Ubuntu 22.04 - Git - PHP 8.3 - PHP 8.2 - PHP 8.1 - PHP 8.0 - PHP 7.4 - PHP 7.3 - PHP 7.2 

## HORIZON (Laravel 13)
- **Laravel Horizon**: - Introduction - Installation     - Configuration     - Dashboard Authorization     - Max Job Attempts     - Job Timeout     - Job Backoff     - Silenced Jobs - Balancing Strategies     - Auto Balancing     - Simple Balancing     - No Balancing - Upgrading Horizon - Running Horizon     - Deploying Horizon - Tags - Notifications - Metrics - Deleting
- **Introduction**: > [!NOTE] > Before digging into Laravel Horizon, you should familiarize yourself with Laravel's base queue services. Horizon augments Laravel's queue with additional features that may be confusing if you are not already familiar with the basic queue features offered by Laravel.  Laravel Horizon provides a beautiful dashboard and code-driven configu
- **Installation**: > [!WARNING] > Laravel Horizon requires that you use Redis to power your queue. Therefore, you should ensure that your queue connection is set to redis in your application's config/queue.php configuration file. Horizon is not compatible with Redis Cluster at this time.  You may install Horizon into your project using the Composer package manager:  

## HTTP-CLIENT (Laravel 13)
- **HTTP Client**: - Introduction - Making Requests     - Request Data     - Headers     - Authentication     - Timeout     - Retries     - Error Handling     - Guzzle Middleware     - Guzzle Options - Concurrent Requests     - Request Pooling     - Request Batching - Macros - Testing     - Faking Responses     - Inspecting Requests     - Preventing Stray Requests - 
- **Introduction**: Laravel provides an expressive, minimal API around the Guzzle HTTP client, allowing you to quickly make outgoing HTTP requests to communicate with other web applications. Laravel's wrapper around Guzzle is focused on its most common use cases and a wonderful developer experience.  <a name="making-requests"></a>
- **Making Requests**: To make requests, you may use the head, get, post, put, patch, and delete methods provided by the Http facade. First, let's examine how to make a basic GET request to another URL:  The get method returns an instance of Illuminate\Http\Client\Response, which provides a variety of methods that may be used to inspect the response:  The Illuminate\Http

## HTTP-TESTS (Laravel 13)
- **HTTP Tests**: - Introduction - Making Requests     - Customizing Request Headers     - Cookies     - Session / Authentication     - Debugging Responses     - Exception Handling - Testing JSON APIs     - Fluent JSON Testing - Testing File Uploads - Testing Views     - Rendering Blade and Components - Caching Routes - Available Assertions     - Response Assertions
- **Introduction**: Laravel provides a very fluent API for making HTTP requests to your application and examining the responses. For example, take a look at the feature test defined below:  The get method makes a GET request into the application, while the assertStatus method asserts that the returned response should have the given HTTP status code. In addition to thi
- **Making Requests**: To make a request to your application, you may invoke the get, post, put, patch, or delete methods within your test. These methods do not actually issue a "real" HTTP request to your application. Instead, the entire network request is simulated internally.  Instead of returning an Illuminate\Http\Response instance, test request methods return an in

## INSTALLATION (Laravel 13)
- **Installation**: - Meet Laravel     - Why Laravel? - Creating a Laravel Application     - Getting Started Using AI     - Installing PHP and the Laravel Installer     - Creating an Application - Initial Configuration     - Environment Based Configuration     - Databases and Migrations     - Directory Configuration - Installation Using Herd     - Herd on macOS     - 
- **Meet Laravel**: Laravel is a web application framework with expressive, elegant syntax. A web framework provides a structure and starting point for creating your application, allowing you to focus on creating something amazing while we sweat the details.  Laravel strives to provide an amazing developer experience while providing powerful features such as thorough 
- **Why Laravel?**: There are a variety of tools and frameworks available to you when building a web application. However, we believe Laravel is the best choice for building modern, full-stack web applications.

## LIFECYCLE (Laravel 13)
- **Request Lifecycle**: - Introduction - Lifecycle Overview     - First Steps     - HTTP / Console Kernels     - Service Providers     - Routing     - Finishing Up - Focus on Service Providers  <a name="introduction"></a>
- **Introduction**: When using any tool in the "real world", you feel more confident if you understand how that tool works. Application development is no different. When you understand how your development tools function, you feel more comfortable and confident using them.  The goal of this document is to give you a good, high-level overview of how the Laravel framewo
- **First Steps**: The entry point for all requests to a Laravel application is the public/index.php file. All requests are directed to this file by your web server (Apache / Nginx) configuration. The index.php file doesn't contain much code. Rather, it is a starting point for loading the rest of the framework.  The index.php file loads the Composer generated autoloa

## LOCALIZATION (Laravel 13)
- **Localization**: - Introduction     - Publishing the Language Files     - Configuring the Locale     - Pluralization Language - Defining Translation Strings     - Using Short Keys     - Using Translation Strings as Keys - Retrieving Translation Strings     - Replacing Parameters in Translation Strings     - Pluralization - Overriding Package Language Files  <a name
- **Introduction**: > [!NOTE] > By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files, you may publish them via the lang:publish Artisan command.  Laravel's localization features provide a convenient way to retrieve strings in various languages, allowing you to easily support multiple 
- **Publishing the Language Files**: By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files or create your own, you should scaffold the lang directory via the lang:publish Artisan command. The lang:publish command will create the lang directory in your application and publish the default set of language

## LOGGING (Laravel 13)
- **Logging**: - Introduction - Configuration     - Available Channel Drivers     - Channel Prerequisites     - Logging Deprecation Warnings - Building Log Stacks - Writing Log Messages     - Contextual Information     - Writing to Specific Channels - Monolog Channel Customization     - Customizing Monolog for Channels     - Creating Monolog Handler Channels     
- **Introduction**: To help you learn more about what's happening within your application, Laravel provides robust logging services that allow you to log messages to files, the system error log, and even to Slack to notify your entire team.  Laravel logging is based on "channels". Each channel represents a specific way of writing log information. For example, the sing
- **Configuration**: All of the configuration options that control your application's logging behavior are housed in the config/logging.php configuration file. This file allows you to configure your application's log channels, so be sure to review each of the available channels and their options. We'll review a few common options below.  By default, Laravel will use th

## MAIL (Laravel 13)
- **Mail**: - Introduction     - Configuration     - Driver Prerequisites     - Failover Configuration     - Round Robin Configuration - Generating Mailables - Writing Mailables     - Configuring the Sender     - Configuring the View     - View Data     - Attachments     - Inline Attachments     - Attachable Objects     - Headers     - Tags and Metadata     - 
- **Introduction**: Sending email doesn't have to be complicated. Laravel provides a clean, simple email API powered by the popular Symfony Mailer component. Laravel and Symfony Mailer provide drivers for sending email via SMTP, Cloudflare, Mailgun, Postmark, Resend, Amazon SES, and sendmail, allowing you to quickly get started sending mail through a local or cloud-ba
- **Configuration**: Laravel's email services may be configured via your application's config/mail.php configuration file. Each mailer configured within this file may have its own unique configuration and even its own unique "transport", allowing your application to use different email services to send certain email messages. For example, your application might use Pos

## MCP (Laravel 13)
- **Laravel MCP**: - Introduction - Installation     - Publishing Routes - Creating Servers     - Server Registration     - Web Servers     - Local Servers - Tools     - Creating Tools     - Tool Input Schemas     - Tool Output Schemas     - Validating Tool Arguments     - Tool Dependency Injection     - Tool Annotations     - Conditional Tool Registration     - Tool
- **Introduction**: Laravel MCP provides a simple and elegant way for AI clients to interact with your Laravel application through the Model Context Protocol. It offers an expressive, fluent interface for defining servers, tools, resources, and prompts that enable AI-powered interactions with your application.  <a name="installation"></a>
- **Installation**: To get started, install Laravel MCP into your project using the Composer package manager:  <a name="publishing-routes"></a>

## MIDDLEWARE (Laravel 13)
- **Middleware**: - Introduction - Defining Middleware - Registering Middleware     - Global Middleware     - Assigning Middleware to Routes     - Middleware Groups     - Middleware Aliases     - Sorting Middleware - Middleware Parameters - Terminable Middleware  <a name="introduction"></a>
- **Introduction**: Middleware provide a convenient mechanism for inspecting and filtering HTTP requests entering your application. For example, Laravel includes a middleware that verifies the user of your application is authenticated. If the user is not authenticated, the middleware will redirect the user to your application's login screen. However, if the user is au
- **Defining Middleware**: To create a new middleware, use the make:middleware Artisan command:  This command will place a new EnsureTokenIsValid class within your app/Http/Middleware directory. In this middleware, we will only allow access to the route if the supplied token input matches a specified value. Otherwise, we will redirect the users back to the /home URI:  As you

## MIGRATIONS (Laravel 13)
- **Database: Migrations**: - Introduction - Generating Migrations     - Squashing Migrations - Migration Structure - Running Migrations     - Rolling Back Migrations - Tables     - Creating Tables     - Updating Tables     - Renaming / Dropping Tables - Columns     - Creating Columns     - Available Column Types     - Column Modifiers     - Modifying Columns     - Renaming C
- **Introduction**: Migrations are like version control for your database, allowing your team to define and share the application's database schema definition. If you have ever had to tell a teammate to manually add a column to their local database schema after pulling in your changes from source control, you've faced the problem that database migrations solve.  The L
- **Generating Migrations**: You may use the make:migration Artisan command to generate a database migration. The new migration will be placed in your database/migrations directory. Each migration filename contains a timestamp that allows Laravel to determine the order of the migrations:  Laravel will use the name of the migration to attempt to guess the name of the table and 

## MIX (Laravel 13)
- **Introduction**: > [!WARNING] > Laravel Mix is a legacy package that is no longer actively maintained. Vite may be used as a modern alternative.  Laravel Mix, a package developed by Laracasts creator Jeffrey Way, provides a fluent API for defining webpack build steps for your Laravel application using several common CSS and JavaScript pre-processors.  In other word

## MOCKING (Laravel 13)
- **Mocking**: - Introduction - Mocking Objects - Mocking Facades     - Facade Spies - Interacting With Time  <a name="introduction"></a>
- **Introduction**: When testing Laravel applications, you may wish to "mock" certain aspects of your application so they are not actually executed during a given test. For example, when testing a controller that dispatches an event, you may wish to mock the event listeners so they are not actually executed during the test. This allows you to only test the controller'
- **Mocking Objects**: When mocking an object that is going to be injected into your application via Laravel's service container, you will need to bind your mocked instance into the container as an instance binding. This will instruct the container to use your mocked instance of the object instead of constructing the object itself:  In order to make this more convenient,

## MONGODB (Laravel 13)
- **MongoDB**: - Introduction - Installation     - MongoDB Driver     - Starting a MongoDB Server     - Install the Laravel MongoDB Package - Configuration - Features  <a name="introduction"></a>
- **Introduction**: MongoDB is one of the most popular NoSQL document-oriented database, used for its high write load (useful for analytics or IoT) and high availability (easy to set replica sets with automatic failover). It can also shard the database easily for horizontal scalability and has a powerful query language for doing aggregation, text search or geospatial 
- **MongoDB Driver**: To connect to a MongoDB database, the mongodb PHP extension is required. If you are developing locally using Laravel Herd or installed PHP via php.new, you already have this extension installed on your system. However, if you need to install the extension manually, you may do so via PECL:  For more information on installing the MongoDB PHP extensio

## NOTIFICATIONS (Laravel 13)
- **Notifications**: - Introduction - Generating Notifications - Sending Notifications     - Using the Notifiable Trait     - Using the Notification Facade     - Specifying Delivery Channels     - Queueing Notifications     - On-Demand Notifications - Mail Notifications     - Formatting Mail Messages     - Customizing the Sender     - Customizing the Recipient     - Cu
- **Introduction**: In addition to support for sending email, Laravel provides support for sending notifications across a variety of delivery channels, including email, SMS (via Vonage, formerly known as Nexmo), and Slack. In addition, a variety of community built notification channels have been created to send notifications over dozens of different channels! Notifica
- **Generating Notifications**: In Laravel, each notification is represented by a single class that is typically stored in the app/Notifications directory. Don't worry if you don't see this directory in your application - it will be created for you when you run the make:notification Artisan command:  This command will place a fresh notification class in your app/Notifications dir

## OCTANE (Laravel 13)
- **Laravel Octane**: - Introduction - Installation - Server Prerequisites     - FrankenPHP     - RoadRunner     - Swoole - Serving Your Application     - Serving Your Application via HTTPS     - Serving Your Application via Nginx     - Watching for File Changes     - Specifying the Worker Count     - Specifying the Max Request Count     - Specifying the Max Execution T
- **Introduction**: Laravel Octane supercharges your application's performance by serving your application using high-powered application servers, including FrankenPHP, Open Swoole, Swoole, and RoadRunner. Octane boots your application once, keeps it in memory, and then feeds it requests at supersonic speeds.  <a name="installation"></a>
- **Installation**: Octane may be installed via the Composer package manager:  After installing Octane, you may execute the octane:install Artisan command, which will install Octane's configuration file into your application:  <a name="server-prerequisites"></a>

## PACKAGES (Laravel 13)
- **Package Development**: - Introduction     - A Note on Facades - Package Discovery - Service Providers - Resources     - Configuration     - Routes     - Migrations     - Language Files     - Views     - View Components     - "About" Artisan Command - Commands     - Optimize Commands     - Reload Commands - Public Assets - Publishing File Groups  <a name="introduction"></
- **Introduction**: Packages are the primary way of adding functionality to Laravel. Packages might be anything from a great way to work with dates like Carbon or a package that allows you to associate files with Eloquent models like Spatie's Laravel Media Library.  There are different types of packages. Some packages are stand-alone, meaning they work with any PHP fr
- **A Note on Facades**: When writing a Laravel application, it generally does not matter if you use contracts or facades since both provide essentially equal levels of testability. However, when writing packages, your package will not typically have access to all of Laravel's testing helpers. If you would like to be able to write your package tests as if the package were 

## PAGINATION (Laravel 13)
- **Database: Pagination**: - Introduction - Basic Usage     - Paginating Query Builder Results     - Paginating Eloquent Results     - Cursor Pagination     - Manually Creating a Paginator     - Customizing Pagination URLs - Displaying Pagination Results     - Adjusting the Pagination Link Window     - Converting Results to JSON - Customizing the Pagination View     - Using 
- **Introduction**: In other frameworks, pagination can be very painful. We hope Laravel's approach to pagination will be a breath of fresh air. Laravel's paginator is integrated with the query builder and Eloquent ORM and provides convenient, easy-to-use pagination of database records with zero configuration.  By default, the HTML generated by the paginator is compat
- **Tailwind**: If you are using Laravel's default Tailwind pagination views with Tailwind 4.x, your application's resources/css/app.css file will already be properly configured to @source Laravel's pagination views:  <a name="basic-usage"></a>

## PASSPORT (Laravel 13)
- **Laravel Passport**: - Introduction     - Passport or Sanctum? - Installation     - Deploying Passport     - Upgrading Passport - Configuration     - Token Lifetimes     - Overriding Default Models     - Overriding Routes - Authorization Code Grant     - Managing Clients     - Requesting Tokens     - Managing Tokens     - Refreshing Tokens     - Revoking Tokens     - P
- **Introduction**: Laravel Passport provides a full OAuth2 server implementation for your Laravel application in a matter of minutes. Passport is built on top of the League OAuth2 server that is maintained by Andy Millington and Simon Hamp.  > [!NOTE] > This documentation assumes you are already familiar with OAuth2. If you do not know anything about OAuth2, consider
- **Passport or Sanctum?**: Before getting started, you may wish to determine if your application would be better served by Laravel Passport or Laravel Sanctum. If your application absolutely needs to support OAuth2, then you should use Laravel Passport.  However, if you are attempting to authenticate a single-page application, mobile application, or issue API tokens, you sho

## PASSWORDS (Laravel 13)
- **Resetting Passwords**: - Introduction     - Configuration     - Driver Prerequisites     - Model Preparation     - Configuring Trusted Hosts - Routing     - Requesting the Password Reset Link     - Resetting the Password - Deleting Expired Tokens - Customization  <a name="introduction"></a>
- **Introduction**: Most web applications provide a way for users to reset their forgotten passwords. Rather than forcing you to re-implement this by hand for every application you create, Laravel provides convenient services for sending password reset links and secure resetting passwords.  > [!NOTE] > Want to get started fast? Install a Laravel application starter ki
- **Configuration**: Your application's password reset configuration file is stored at config/auth.php. Be sure to review the options available to you in this file. By default, Laravel is configured to use the database password reset driver.  The password reset driver configuration option defines where password reset data will be stored. Laravel includes two drivers:  

## PENNANT (Laravel 13)
- **Laravel Pennant**: - Introduction - Installation - Configuration - Defining Features     - Class Based Features - Checking Features     - Conditional Execution     - The HasFeatures Trait     - Blade Directive     - Middleware     - Intercepting Feature Checks     - In-Memory Cache - Scope     - Specifying the Scope     - Default Scope     - Nullable Scope     - Iden
- **Introduction**: Laravel Pennant is a simple and light-weight feature flag package - without the cruft. Feature flags enable you to incrementally roll out new application features with confidence, A/B test new interface designs, complement a trunk-based development strategy, and much more.  <a name="installation"></a>
- **Installation**: First, install Pennant into your project using the Composer package manager:  Next, you should publish the Pennant configuration and migration files using the vendor:publish Artisan command:  Finally, you should run your application's database migrations. This will create a features table that Pennant uses to power its database driver:  <a name="co

## PINT (Laravel 13)
- **Laravel Pint**: - Introduction - Installation - Running Pint - Configuring Pint     - Presets     - Rules     - Excluding Files / Folders - Continuous Integration     - GitHub Actions  <a name="introduction"></a>
- **Introduction**: Laravel Pint is an opinionated PHP code style fixer for minimalists. Pint is built on top of PHP CS Fixer and makes it simple to ensure that your code style stays clean and consistent.  Pint is automatically installed with all new Laravel applications so you may start using it immediately. By default, Pint does not require any configuration and wil
- **Installation**: Pint is included in recent releases of the Laravel framework, so installation is typically unnecessary. However, for older applications, you may install Laravel Pint via Composer:  <a name="running-pint"></a>

## PRECOGNITION (Laravel 13)
- **Precognition**: - Introduction - Live Validation     - Using Vue     - Using React     - Using Alpine and Blade     - Configuring Axios - Validating Arrays - Customizing Validation Rules - Handling File Uploads - Managing Side-Effects - Testing  <a name="introduction"></a>
- **Introduction**: Laravel Precognition allows you to anticipate the outcome of a future HTTP request. One of the primary use cases of Precognition is the ability to provide "live" validation for your frontend JavaScript application without having to duplicate your application's backend validation rules.  When Laravel receives a "precognitive request", it will execut
- **Using Vue**: Using Laravel Precognition, you can offer live validation experiences to your users without having to duplicate your validation rules in your frontend Vue application. To illustrate how it works, let's build a form for creating new users within our application.  First, to enable Precognition for a route, the HandlePrecognitiveRequests middleware sh

## PROCESSES (Laravel 13)
- **Processes**: - Introduction - Invoking Processes     - Process Options     - Process Output     - Pipelines - Asynchronous Processes     - Process IDs and Signals     - Asynchronous Process Output     - Asynchronous Process Timeouts - Concurrent Processes     - Naming Pool Processes     - Pool Process IDs and Signals - Testing     - Faking Processes     - Fakin
- **Introduction**: Laravel provides an expressive, minimal API around the Symfony Process component, allowing you to conveniently invoke external processes from your Laravel application. Laravel's process features are focused on the most common use cases and a wonderful developer experience.  <a name="invoking-processes"></a>
- **Invoking Processes**: To invoke a process, you may use the run and start methods offered by the Process facade. The run method will invoke a process and wait for the process to finish executing, while the start method is used for asynchronous process execution. We'll examine both approaches within this documentation. First, let's examine how to invoke a basic, synchrono

## PROMPTS (Laravel 13)
- **Prompts**: - Introduction - Installation - Available Prompts     - Text     - Textarea     - Number     - Password     - Confirm     - Select     - Multi-select     - Suggest     - Search     - Multi-search     - Pause     - Autocomplete - Transforming Input Before Validation - Forms - Informational Messages - Callouts - Tables - Spin - Progress Bar - Task - 
- **Introduction**: Laravel Prompts is a PHP package for adding beautiful and user-friendly forms to your command-line applications, with browser-like features including placeholder text and validation.  <img src="https://laravel.com/img/docs/prompts-example.png">  Laravel Prompts is perfect for accepting user input in your Artisan console commands, but it may also be
- **Installation**: Laravel Prompts is already included with the latest release of Laravel.  Laravel Prompts may also be installed in your other PHP projects by using the Composer package manager:  <a name="available-prompts"></a>

## PROVIDERS (Laravel 13)
- **Service Providers**: - Introduction - Writing Service Providers     - The Register Method     - The Boot Method - Registering Providers - Deferred Providers  <a name="introduction"></a>
- **Introduction**: Service providers are the central place of all Laravel application bootstrapping. Your own application, as well as all of Laravel's core services, are bootstrapped via service providers.  But, what do we mean by "bootstrapped"? In general, we mean **registering** things, including registering service container bindings, event listeners, middleware,
- **Writing Service Providers**: All service providers extend the Illuminate\Support\ServiceProvider class. Most service providers contain a register and a boot method. Within the register method, you should **only bind things into the service container**. You should never attempt to register any event listeners, routes, or any other piece of functionality within the register meth

## PULSE (Laravel 13)
- **Laravel Pulse**: - Introduction - Installation     - Configuration - Dashboard     - Authorization     - Customization     - Resolving Users     - Cards - Capturing Entries     - Recorders     - Filtering - Performance     - Using a Different Database     - Redis Ingest     - Sampling     - Trimming     - Handling Pulse Exceptions - Custom Cards     - Card Componen
- **Introduction**: Laravel Pulse delivers at-a-glance insights into your application's performance and usage. With Pulse, you can track down bottlenecks like slow jobs and endpoints, find your most active users, and more.  For in-depth debugging of individual events, check out Laravel Telescope.  <a name="installation"></a>
- **Installation**: > [!WARNING] > Pulse's first-party storage implementation currently requires a MySQL, MariaDB, or PostgreSQL database. If you are using a different database engine, you will need a separate MySQL, MariaDB, or PostgreSQL database for your Pulse data.  You may install Pulse using the Composer package manager:  Next, you should publish the Pulse confi

## QUERIES (Laravel 13)
- **Database: Query Builder**: - Introduction - Running Database Queries     - Chunking Results     - Streaming Results Lazily     - Aggregates - Select Statements - Raw Expressions - Joins - Unions - Basic Where Clauses     - Where Clauses     - Or Where Clauses     - Where Not Clauses     - Where Any / All / None Clauses     - JSON Where Clauses     - Additional Where Clauses 
- **Introduction**: Laravel's database query builder provides a convenient, fluent interface to creating and running database queries. It can be used to perform most database operations in your application and works perfectly with all of Laravel's supported database systems.  The Laravel query builder uses PDO parameter binding to protect your application against SQL 
- **Retrieving All Rows From a Table**: You may use the table method provided by the DB facade to begin a query. The table method returns a fluent query builder instance for the given table, allowing you to chain more constraints onto the query and then finally retrieve the results of the query using the get method:  The get method returns an Illuminate\Support\Collection instance contai

## QUEUES (Laravel 13)
- **Queues**: - Introduction     - Connections vs. Queues     - Driver Notes and Prerequisites - Creating Jobs     - Generating Job Classes     - Class Structure     - Unique Jobs     - Debounced Jobs     - Encrypted Jobs - Job Middleware     - Rate Limiting     - Preventing Job Overlaps     - Throttling Exceptions     - Skipping Jobs - Dispatching Jobs     - De
- **Introduction**: While building your web application, you may have some tasks, such as parsing and storing an uploaded CSV file, that take too long to perform during a typical web request. Thankfully, Laravel allows you to easily create queued jobs that may be processed in the background. By moving time intensive tasks to a queue, your application can respond to we
- **Connections vs. Queues**: Before getting started with Laravel queues, it is important to understand the distinction between "connections" and "queues". In your config/queue.php configuration file, there is a connections configuration array. This option defines the connections to backend queue services such as Amazon SQS, Beanstalk, or Redis. However, any given queue connect

## RATE-LIMITING (Laravel 13)
- **Rate Limiting**: - Introduction     - Cache Configuration - Basic Usage     - Manually Incrementing Attempts     - Clearing Attempts  <a name="introduction"></a>
- **Introduction**: Laravel includes a simple to use rate limiting abstraction which, in conjunction with your application's cache, provides an easy way to limit any action during a specified window of time.  > [!NOTE] > If you are interested in rate limiting incoming HTTP requests, please consult the rate limiter middleware documentation.  <a name="cache-configuratio
- **Cache Configuration**: Typically, the rate limiter utilizes your default application cache as defined by the default key within your application's cache configuration file. However, you may specify which cache driver the rate limiter should use by defining a limiter key within your application's cache configuration file:  <a name="basic-usage"></a>

## REDIS (Laravel 13)
- **Redis**: - Introduction - Configuration     - Clusters     - Predis     - PhpRedis - Interacting With Redis     - Transactions     - Pipelining Commands - Pub / Sub  <a name="introduction"></a>
- **Introduction**: Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, and sorted sets.  Before using Redis with Laravel, we encourage you to install and use the PhpRedis PHP extension via PECL. The extension is more complex to install compared to "user-land" PHP pa
- **Configuration**: You may configure your application's Redis settings via the config/database.php configuration file. Within this file, you will see a redis array containing the Redis servers utilized by your application:  Each Redis server defined in your configuration file is required to have a name, host, and a port unless you define a single URL to represent the

## RELEASES (Laravel 13)
- **Release Notes**: - Versioning Scheme - Support Policy - Laravel 13  <a name="versioning-scheme"></a>
- **Versioning Scheme**: Laravel and its other first-party packages follow Semantic Versioning. Major framework releases are released every year (~Q1), while minor and patch releases may be released as often as every week. Minor and patch releases should **never** contain breaking changes.  When referencing the Laravel framework or its components from your application or p
- **Named Arguments**: Named arguments are not covered by Laravel's backwards compatibility guidelines. We may choose to rename function arguments when necessary in order to improve the Laravel codebase. Therefore, using named arguments when calling Laravel methods should be done cautiously and with the understanding that the parameter names may change in the future.  <a

## REQUESTS (Laravel 13)
- **HTTP Requests**: - Introduction - Interacting With The Request     - Accessing the Request     - Request Path, Host, and Method     - Request Headers     - Request IP Address     - Content Negotiation     - PSR-7 Requests - Input     - Retrieving Input     - Input Presence     - Merging Additional Input     - Old Input     - Cookies     - Input Trimming and Normali
- **Introduction**: Laravel's Illuminate\Http\Request class provides an object-oriented way to interact with the current HTTP request being handled by your application as well as retrieve the input, cookies, and files that were submitted with the request.  <a name="interacting-with-the-request"></a>
- **Accessing the Request**: To obtain an instance of the current HTTP request via dependency injection, you should type-hint the Illuminate\Http\Request class on your route closure or controller method. The incoming request instance will automatically be injected by the Laravel service container:  As mentioned, you may also type-hint the Illuminate\Http\Request class on a rou

## RESPONSES (Laravel 13)
- **HTTP Responses**: - Creating Responses     - Attaching Headers to Responses     - Attaching Cookies to Responses     - Cookies and Encryption - Redirects     - Redirecting to Named Routes     - Redirecting to Controller Actions     - Redirecting to External Domains     - Redirecting With Flashed Session Data - Other Response Types     - View Responses     - JSON Res
- **Strings and Arrays**: All routes and controllers should return a response to be sent back to the user's browser. Laravel provides several different ways to return responses. The most basic response is returning a string from a route or controller. The framework will automatically convert the string into a full HTTP response:  In addition to returning strings from your r
- **Response Objects**: Typically, you won't just be returning simple strings or arrays from your route actions. Instead, you will be returning full Illuminate\Http\Response instances or views.  Returning a full Response instance allows you to customize the response's HTTP status code and headers. A Response instance inherits from the Symfony\Component\HttpFoundation\Resp

## REVERB (Laravel 13)
- **Laravel Reverb**: - Introduction - Installation - Configuration     - Application Credentials     - Allowed Origins     - Additional Applications     - SSL - Running the Server     - Debugging     - Restarting - Monitoring - Running Reverb in Production     - Open Files     - Event Loop     - Web Server     - Ports     - Process Management     - Scaling - Events  <a
- **Introduction**: Laravel Reverb brings blazing-fast and scalable real-time WebSocket communication directly to your Laravel application, and provides seamless integration with Laravel's existing suite of event broadcasting tools.  <a name="installation"></a>
- **Installation**: You may install Reverb using the install:broadcasting Artisan command:  <a name="configuration"></a>

## ROUTING (Laravel 13)
- **Routing**: - Basic Routing     - The Default Route Files     - Redirect Routes     - View Routes     - Listing Your Routes     - Routing Customization - Route Parameters     - Required Parameters     - Optional Parameters     - Regular Expression Constraints - Named Routes - Route Groups     - Middleware     - Controllers     - Subdomain Routing     - Route P
- **Basic Routing**: The most basic Laravel routes accept a URI and a closure, providing a very simple and expressive method of defining routes and behavior without complicated routing configuration files:  <a name="the-default-route-files"></a>
- **The Default Route Files**: All Laravel routes are defined in your route files, which are located in the routes directory. These files are automatically loaded by Laravel using the configuration specified in your application's bootstrap/app.php file. The routes/web.php file defines routes that are for your web interface. These routes are assigned the web middleware group, whi

## SAIL (Laravel 13)
- **Laravel Sail**: - Introduction - Installation and Setup     - Rebuilding Sail Images     - Configuring A Shell Alias - Starting and Stopping Sail - Executing Commands     - Executing PHP Commands     - Executing Composer Commands     - Executing Artisan Commands     - Executing Node / NPM Commands - Interacting With Databases     - MySQL     - MongoDB     - Redis 
- **Introduction**: Laravel Sail is a light-weight command-line interface for interacting with Laravel's default Docker development environment. Sail provides a great starting point for building a Laravel application using PHP, MySQL, and Redis without requiring prior Docker experience.  At its heart, Sail is the compose.yaml file and the sail script that is stored at
- **Installation and Setup**: You may install Sail using the Composer package manager:  After Sail has been installed, you may run the sail:install Artisan command. This command will publish Sail's compose.yaml file to the root of your application and modify your .env file with the required environment variables in order to connect to the Docker services:  Finally, you may star

## SANCTUM (Laravel 13)
- **Laravel Sanctum**: - Introduction     - How it Works - Installation - Configuration     - Overriding Default Models - API Token Authentication     - Issuing API Tokens     - Token Abilities     - Protecting Routes     - Revoking Tokens     - Token Expiration - SPA Authentication     - Configuration     - Authenticating     - Protecting Routes     - Authorizing Privat
- **Introduction**: Laravel Sanctum provides a featherweight authentication system for SPAs (single page applications), mobile applications, and simple, token based APIs. Sanctum allows each user of your application to generate multiple API tokens for their account. These tokens may be granted abilities / scopes which specify which actions the tokens are allowed to pe
- **How it Works**: Laravel Sanctum exists to solve two separate problems. Let's discuss each before digging deeper into the library.  <a name="how-it-works-api-tokens"></a>

## SCHEDULING (Laravel 13)
- **Task Scheduling**: - Introduction - Defining Schedules     - Scheduling Artisan Commands     - Scheduling Queued Jobs     - Scheduling Shell Commands     - Schedule Frequency Options     - Timezones     - Preventing Task Overlaps     - Running Tasks on One Server     - Background Tasks     - Maintenance Mode     - Pausing Scheduled Tasks     - Schedule Groups - Runni
- **Introduction**: In the past, you may have written a cron configuration entry for each task you needed to schedule on your server. However, this can quickly become a pain because your task schedule is no longer in source control and you must SSH into your server to view your existing cron entries or add additional entries.  Laravel's command scheduler offers a fres
- **Defining Schedules**: You may define all of your scheduled tasks in your application's routes/console.php file. To get started, let's take a look at an example. In this example, we will schedule a closure to be called every day at midnight. Within the closure we will execute a database query to clear a table:  In addition to scheduling using closures, you may also sched

## SCOUT (Laravel 13)
- **Laravel Scout**: - Introduction - Installation     - Queueing - Driver Prerequisites - Configuration     - Configuring Searchable Data - Database / Collection Engines     - Database Engine     - Collection Engine - Third-Party Engine Configuration     - Configuring Model Indexes     - Algolia     - Meilisearch     - Typesense - Third-Party Engine Indexing     - Bat
- **Introduction**: Laravel Scout provides a simple, driver-based solution for adding full-text search to your Eloquent models. Using model observers, Scout will automatically keep your search indexes in sync with your Eloquent records.  Scout ships with a built-in database engine that uses MySQL / PostgreSQL full-text indexes and LIKE clauses to search your existing 
- **Installation**: First, install Scout via the Composer package manager:  After installing Scout, you should publish the Scout configuration file using the vendor:publish Artisan command. This command will publish the scout.php configuration file to your application's config directory:  Finally, add the Laravel\Scout\Searchable trait to the model you would like to m

## SEARCH (Laravel 13)
- **Search**: - Introduction     - Full-Text Search     - Semantic / Vector Search     - Reranking     - Scout Search Engines - Full-Text Search     - Adding Full-Text Indexes     - Running Full-Text Queries - Semantic / Vector Search     - Generating Embeddings     - Storing and Indexing Vectors     - Querying by Similarity - Reranking Results - Laravel Scout  
- **Introduction**: Almost every application needs search. Whether your users are searching a knowledge base for relevant articles, exploring a product catalog, or asking natural-language questions against a corpus of documents, Laravel provides built-in tools to handle each of these scenarios — and you often don't need any external services to get there.  Most applic
- **Full-Text Search**: When you need keyword relevance ranking — where the database scores and sorts results based on how well they match the search terms — Laravel's whereFullText query builder method leverages native full-text indexes on MariaDB, MySQL, and PostgreSQL. Full-text search understands word boundaries and stemming, so a search for "running" can match record

## SEEDING (Laravel 13)
- **Database: Seeding**: - Introduction - Writing Seeders     - Using Model Factories     - Calling Additional Seeders     - Muting Model Events - Running Seeders  <a name="introduction"></a>
- **Introduction**: Laravel includes the ability to seed your database with data using seed classes. All seed classes are stored in the database/seeders directory. By default, a DatabaseSeeder class is defined for you. From this class, you may use the call method to run other seed classes, allowing you to control the seeding order.  > [!NOTE] > Mass assignment protect
- **Writing Seeders**: To generate a seeder, execute the make:seeder Artisan command. All seeders generated by the framework will be placed in the database/seeders directory:  A seeder class only contains one method by default: run. This method is called when the db:seed Artisan command is executed. Within the run method, you may insert data into your database however yo

## SESSION (Laravel 13)
- **HTTP Session**: - Introduction     - Configuration     - Driver Prerequisites - Interacting With the Session     - Retrieving Data     - Storing Data     - Flash Data     - Deleting Data     - Regenerating the Session ID - Session Cache - Session Blocking - Adding Custom Session Drivers     - Implementing the Driver     - Registering the Driver  <a name="introduct
- **Introduction**: Since HTTP driven applications are stateless, sessions provide a way to store information about the user across multiple requests. That user information is typically placed in a persistent store / backend that can be accessed from subsequent requests.  Laravel ships with a variety of session backends that are accessed through an expressive, unified
- **Configuration**: Your application's session configuration file is stored at config/session.php. Be sure to review the options available to you in this file. By default, Laravel is configured to use the database session driver.  The session driver configuration option defines where session data will be stored for each request. Laravel includes a variety of drivers: 

## SOCIALITE (Laravel 13)
- **Laravel Socialite**: - Introduction - Installation - Upgrading Socialite - Configuration - Authentication     - Routing     - Authentication and Storage     - Access Scopes     - Slack Bot Scopes     - Optional Parameters - Retrieving User Details - Testing  <a name="introduction"></a>
- **Introduction**: In addition to typical, form based authentication, Laravel also provides a simple, convenient way to authenticate with OAuth providers using Laravel Socialite. Socialite currently supports authentication via Facebook, X, LinkedIn, Google, GitHub, GitLab, Bitbucket, and Slack.  > [!NOTE] > Adapters for other platforms are available via the community
- **Installation**: To get started with Socialite, use the Composer package manager to add the package to your project's dependencies:  <a name="upgrading-socialite"></a>

## STARTER-KITS (Laravel 13)
- **Starter Kits**: - Introduction - Creating an Application Using a Starter Kit - Available Starter Kits     - React     - Svelte     - Vue     - Livewire - Starter Kit Customization     - React     - Svelte     - Vue     - Livewire - Authentication     - Enabling and Disabling Features     - Customizing User Creation and Password Reset     - Two-Factor Authenticatio
- **Introduction**: To give you a head start building your new Laravel application, we are happy to offer application starter kits. These starter kits give you a head start on building your next Laravel application, and include the routes, controllers, and views you need to register and authenticate your application's users. The starter kits use Laravel Fortify to pro
- **Creating an Application Using a Starter Kit**: To create a new Laravel application using one of our starter kits, you should first install PHP and the Laravel CLI tool. If you already have PHP and Composer installed, you may install the Laravel installer CLI tool via Composer:  Then, create a new Laravel application using the Laravel installer CLI. The Laravel installer will prompt you to selec

## STRINGS (Laravel 13)
- **Introduction**: Laravel includes a variety of functions for manipulating string values. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.  <a name="available-methods"></a>
- **Available Methods**: <style>     .collection-method-list > p {         columns: 10.8em 3; -moz-columns: 10.8em 3; -webkit-columns: 10.8em 3;     }      .collection-method-list a {         display: block;         overflow: hidden;         text-overflow: ellipsis;         white-space: nowrap;     } </style>  <a name="strings-method-list"></a>
- **Strings**: <div class="collection-method-list" markdown="1">  \__ class_basename e preg_replace_array Str::after Str::afterLast Str::apa Str::ascii Str::before Str::beforeLast Str::between Str::betweenFirst Str::camel Str::charAt Str::chopStart Str::chopEnd Str::contains Str::containsAll Str::doesntContain Str::doesntEndWith Str::doesntStartWith Str::deduplic

## STRUCTURE (Laravel 13)
- **Directory Structure**: - Introduction - The Root Directory     - The app Directory     - The bootstrap Directory     - The config Directory     - The database Directory     - The public Directory     - The resources Directory     - The routes Directory     - The storage Directory     - The tests Directory     - The vendor Directory - The App Directory     - The Broadcast
- **Introduction**: The default Laravel application structure is intended to provide a great starting point for both large and small applications. But you are free to organize your application however you like. Laravel imposes almost no restrictions on where any given class is located - as long as Composer can autoload the class.  <a name="the-root-directory"></a>
- **The App Directory**: The app directory contains the core code of your application. We'll explore this directory in more detail soon; however, almost all of the classes in your application will be in this directory.  <a name="the-bootstrap-directory"></a>

## TELESCOPE (Laravel 13)
- **Laravel Telescope**: - Introduction - Installation     - Local Only Installation     - Configuration     - Data Pruning     - Dashboard Authorization - Upgrading Telescope - Filtering     - Entries     - Batches - Tagging - Available Watchers     - Batch Watcher     - Cache Watcher     - Command Watcher     - Dump Watcher     - Event Watcher     - Exception Watcher    
- **Introduction**: Laravel Telescope makes a wonderful companion to your local Laravel development environment. Telescope provides insight into the requests coming into your application, exceptions, log entries, database queries, queued jobs, mail, notifications, cache operations, scheduled tasks, variable dumps, and more.  <img src="https://laravel.com/img/docs/tele
- **Installation**: You may use the Composer package manager to install Telescope into your Laravel project:  After installing Telescope, publish its assets and migrations using the telescope:install Artisan command. After installing Telescope, you should also run the migrate command in order to create the tables needed to store Telescope's data:  Finally, you may acc

## TESTING (Laravel 13)
- **Testing: Getting Started**: - Introduction - Environment - Creating Tests - Running Tests     - Running Tests in Parallel     - Reporting Test Coverage     - Profiling Tests - Configuration Caching  <a name="introduction"></a>
- **Introduction**: Laravel is built with testing in mind. In fact, support for testing with Pest and PHPUnit is included out of the box and a phpunit.xml file is already set up for your application. The framework also ships with convenient helper methods that allow you to expressively test your applications.  By default, your application's tests directory contains tw
- **Environment**: When running tests, Laravel will automatically set the configuration environment to testing because of the environment variables defined in the phpunit.xml file. Laravel also automatically configures the session and cache to the array driver so that no session or cache data will be persisted while testing.  You are free to define other testing envi

## UPGRADE (Laravel 13)
- **Upgrade Guide**: - Upgrading To 13.0 From 12.x     - Upgrading Using AI  <a name="high-impact-changes"></a>
- **High Impact Changes**: <div class="content-list" markdown="1">  - Updating Dependencies - Updating the Laravel Installer - Request Forgery Protection  </div>  <a name="medium-impact-changes"></a>
- **Medium Impact Changes**: <div class="content-list" markdown="1">  - Cache serializable_classes Configuration - Database upsert With MySQL or MariaDB  </div>  <a name="low-impact-changes"></a>

## URLS (Laravel 13)
- **URL Generation**: - Introduction - The Basics     - Generating URLs     - Accessing the Current URL - URLs for Named Routes     - Signed URLs - URLs for Controller Actions - Fluent URI Objects - Default Values  <a name="introduction"></a>
- **Introduction**: Laravel provides several helpers to assist you in generating URLs for your application. These helpers are primarily helpful when building links in your templates and API responses, or when generating redirect responses to another part of your application.  <a name="the-basics"></a>
- **Generating URLs**: The url helper may be used to generate arbitrary URLs for your application. The generated URL will automatically use the scheme (HTTP or HTTPS) and host from the current request being handled by the application:  To generate a URL with query string parameters, you may use the query method:  Providing query string parameters that already exist in th

## VALET (Laravel 13)
- **Laravel Valet**: - Introduction - Installation     - Upgrading Valet - Serving Sites     - The "Park" Command     - The "Link" Command     - Securing Sites With TLS     - Serving a Default Site     - Per-Site PHP Versions - Sharing Sites     - Sharing Sites on Your Local Network - Site Specific Environment Variables - Proxying Services - Custom Valet Drivers     - 
- **Introduction**: > [!NOTE] > Looking for an even easier way to develop Laravel applications on macOS or Windows? Check out Laravel Herd. Herd includes everything you need to get started with Laravel development, including Valet, PHP, and Composer.  Laravel Valet is a development environment for macOS minimalists. Laravel Valet configures your Mac to always run Ngin
- **Installation**: > [!WARNING] > Valet requires macOS and Homebrew. Before installation, you should make sure that no other programs such as Apache or Nginx are binding to your local machine's port 80.  To get started, you first need to ensure that Homebrew is up to date using the update command:  Next, you should use Homebrew to install PHP:  After installing PHP, 

## VALIDATION (Laravel 13)
- **Validation**: - Introduction - Validation Quickstart     - Defining the Routes     - Creating the Controller     - Writing the Validation Logic     - Displaying the Validation Errors     - Repopulating Forms     - A Note on Optional Fields     - Validation Error Response Format - Form Request Validation     - Creating Form Requests     - Authorizing Form Request
- **Introduction**: Laravel provides several different approaches to validate your application's incoming data. It is most common to use the validate method available on all incoming HTTP requests. However, we will discuss other approaches to validation as well.  Laravel includes a wide variety of convenient validation rules that you may apply to data, even providing 
- **Validation Quickstart**: To learn about Laravel's powerful validation features, let's look at a complete example of validating a form and displaying the error messages back to the user. By reading this high-level overview, you'll be able to gain a good general understanding of how to validate incoming request data using Laravel:  <a name="quick-defining-the-routes"></a>

## VERIFICATION (Laravel 13)
- **Email Verification**: - Introduction     - Model Preparation     - Database Preparation - Routing     - The Email Verification Notice     - The Email Verification Handler     - Resending the Verification Email     - Protecting Routes - Customization - Events  <a name="introduction"></a>
- **Introduction**: Many web applications require users to verify their email addresses before using the application. Rather than forcing you to re-implement this feature by hand for each application you create, Laravel provides convenient built-in services for sending and verifying email verification requests.  > [!NOTE] > Want to get started fast? Install one of the
- **Model Preparation**: Before getting started, verify that your App\Models\User model implements the Illuminate\Contracts\Auth\MustVerifyEmail contract:  Once this interface has been added to your model, newly registered users will automatically be sent an email containing an email verification link. This happens seamlessly because Laravel automatically registers the Ill

## VIEWS (Laravel 13)
- **Views**: - Introduction     - Writing Views in React / Svelte / Vue - Creating and Rendering Views     - Nested View Directories     - Creating the First Available View     - Determining if a View Exists - Passing Data to Views     - Sharing Data With All Views - View Composers     - View Creators - Optimizing Views  <a name="introduction"></a>
- **Introduction**: Of course, it's not practical to return entire HTML documents strings directly from your routes and controllers. Thankfully, views provide a convenient way to place all of our HTML in separate files.  Views separate your controller / application logic from your presentation logic and are stored in the resources/views directory. When using Laravel, 
- **Writing Views in React / Svelte / Vue**: Instead of writing their frontend templates in PHP via Blade, many developers have begun to prefer to write their templates using React, Svelte, or Vue. Laravel makes this painless thanks to Inertia, a library that makes it a cinch to tie your React / Svelte / Vue frontend to your Laravel backend without the typical complexities of building an SPA.

## VITE (Laravel 13)
- **Asset Bundling (Vite)**: - Introduction - Installation & Setup   - Installing Node   - Installing Vite and the Laravel Plugin   - Configuring Vite   - Loading Your Scripts and Styles - Running Vite - Working With JavaScript   - Aliases   - Vue   - React   - Svelte   - Inertia   - URL Processing - Working With Stylesheets - Working With Fonts   - Font Providers   - Local Fo
- **Introduction**: Vite is a modern frontend build tool that provides an extremely fast development environment and bundles your code for production. When building applications with Laravel, you will typically use Vite to bundle your application's CSS and JavaScript files into production-ready assets.  Laravel integrates seamlessly with Vite by providing an official 
- **Installation & Setup**: > [!NOTE] > The following documentation discusses how to manually install and configure the Laravel Vite plugin. However, Laravel's starter kits already include all of this scaffolding and are the fastest way to get started with Laravel and Vite.  <a name="installing-node"></a>