Files
alfa-bank-sdk/_docs/laravel-libs/laravel-data/advanced-usage/get-data-from-a-class-quickly.md

56 lines
1.2 KiB
Markdown

---
title: Get data from a class quickly
weight: 15
---
By adding the `WithData` trait to a Model, Request or any class that can be magically be converted to a data object,
you'll enable support for the `getData` method. This method will automatically generate a data object for the object it
is called upon.
For example, let's retake a look at the `Song` model we saw earlier. We can add the `WithData` trait as follows:
```php
class Song extends Model
{
use WithData;
protected $dataClass = SongData::class;
}
```
Now we can quickly get the data object for the model as such:
```php
Song::firstOrFail($id)->getData(); // A SongData object
```
We can do the same with a FormRequest, we don't use a property here to define the data class but use a method instead:
```php
class SongRequest extends FormRequest
{
use WithData;
protected function dataClass(): string
{
return SongData::class;
}
}
```
Now within a controller where the request is injected, we can get the data object like this:
```php
class SongController
{
public function __invoke(SongRequest $request): SongData
{
$data = $request->getData();
$song = Song::create($data->toArray());
return $data;
}
}
```