This is the documentation for
v2 but the latest version is
You can switch versions in the menu on the left/at the top.
Check your current version with the following command:
composer show spatie/laravel-data
This package enables the creation of rich data objects which can be used in various ways. Using this package you only need to describe your data once:
- instead of a form request, you can use a data object
- instead of an API transformer, you can use a data object
- instead of manually writing a typescript definition, you can use... 🥁 a data object
laravel-data specific object is just a regular PHP object that extends from
class SongData extends Data
public function __construct(
public string $title,
public string $artist,
By extending from
Data you enable a lot of new functionality like:
- Automatically transforming data objects into resources (like the Laravel API resources)
- Transform only the requested parts of data objects with lazy properties
- Automatically creating data objects from request data and validating them
- Automatically resolve validation rules for properties within a data object
- Make it possible to construct a data object from any type you want
- Add support for automatically validating data objects when creating them
- Generate TypeScript definitions from your data objects you can use on the frontend
- Save data objects as properties of an Eloquent model
- And a lot more ...
Why would you be using this package?
- You can be sure that data is typed when it leaves your app and comes back again from the frontend which makes a lot less errors
- You don't have to write the same properties three times (in a resource, in a data transfer object and in request validation)
- You need to write a lot less of validation rules because they are obvious through PHP's type system
- You get TypeScript versions of the data objects for free
Let's dive right into it!
##Are you a visual learner?
In this talk, given at Laracon, you'll see an introduction to Laravel Data.
##We have badges!