1. Go to this page and download the library: Download bssphp/laraveldto library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
bssphp / laraveldto example snippets
use App\Models\Person;
use App\Models\Project;
use Illuminate\Validation\Rules\Exists;
use bssphp\laraveldto\AbstractModelData;
use bssphp\laraveldto\Attributes\ForModel;
use bssphp\laraveldto\Attributes\ValidationRule;
class PersonData extends AbstractModelData
{
#[ValidationRule(['$projectId;
}
use App\Models\Person;
use bssphp\laraveldto\AbstractModelData;
use bssphp\laraveldto\Attributes\ForModel;
use bssphp\laraveldto\Attributes\ModelAttribute;
#[ForModel(Person::class)]
class PersonData extends AbstractModelData
{
#[ModelAttribute] // The `$name` DTO property will populate the `name` model attribute
public string $name;
#[ModelAttribute('current_age')] // The `$currentAge` DTO property will populate the `current_age` model attribute
public int $currentAge;
public string $language; // The `$language` DTO property will be ignored
}
use App\Models\Person;
$person = $data->toModel($person)->save();
use App\Models\Person;
use bssphp\laraveldto\AbstractModelData;
use bssphp\laraveldto\Attributes\ForModel;
use bssphp\laraveldto\Attributes\ModelAttribute;
use bssphp\laraveldto\Attributes\RequestAttribute;
#[ForModel(Person::class)]
class PersonData extends AbstractModelData
{
#[RequestAttribute] // The `$name` DTO property will de populated by the `name` request attribute
public string $name;
#[RequestAttribute('my_age')] // The `$currentAge` DTO property will be populated by `my_age` request attribute
public int $currentAge;
public string $language; // The `$language` DTO property will not be populated
}
use App\Data\PersonData;
use Illuminate\Http\Request;
class TestController
{
public function store(Request $request)
{
$data = PersonData::fromRequest($request);
}
}
use App\Models\Person;
use Illuminate\Validation\Rules\Exists;
use bssphp\laraveldto\AbstractModelData;
use bssphp\laraveldto\Attributes\ForModel;
use bssphp\laraveldto\Attributes\ModelAttribute;
use bssphp\laraveldto\Attributes\RequestAttribute;
use bssphp\laraveldto\Attributes\ValidatedRequestModelAttribute;
use bssphp\laraveldto\Attributes\ValidationRule;
#[ForModel(Person::class)]
class PersonData extends AbstractModelData
{
// All attributes attached separately (looks disgusting doesn't it?)
#[
ValidationRule(['
use App\Data\PersonData;
use Illuminate\Http\Request;
class TestController
{
public function index(Request $request)
{
$person = PersonData::fromRequest($request)->toModel()->save();
return $person->id;
}
}
use App\Models\Person;
use bssphp\laraveldto\AbstractModelData;
use bssphp\laraveldto\Attributes\ForModel;
use bssphp\laraveldto\Attributes\NestedModelData;
use bssphp\laraveldto\Attributes\RequestAttribute;
use bssphp\laraveldto\Attributes\ValidatedRequestModelAttribute;
use bssphp\laraveldto\Attributes\ValidationRule;
#[ForModel(Person::class)]
class PersonData extends AbstractModelData
{
#[ValidatedRequestModelAttribute(['
use App\Models\Address;
use bssphp\laraveldto\AbstractModelData;
use bssphp\laraveldto\Attributes\ValidatedRequestModelAttribute;
#[ForModel(Address::class)]
class AddressData extends AbstractModelData
{
#[ValidatedRequestModelAttribute(['string'])]
public string $street;
#[ValidatedRequestModelAttribute(['nullable', 'int'])]
public ?int $apartment = null;
}
use App\Data\PersonData;
use Illuminate\Http\Request;
class TestController
{
public function index(Request $request)
{
$personData = PersonData::fromRequest($request);
$person = $personData->toModel()->save();
foreach ($personData->addresses as $addressData) {
// We assume the `Person` model has a has-many relation with the `Address` model
$person->addresses()->save(
$addressData->toModel()
);
}
return $person->id;
}
}
use Carbon\Carbon;
use bssphp\laraveldto\AbstractModelData;
use bssphp\laraveldto\Attributes\Casts\CastToDate;
class PersonData extends AbstractModelData
{
#[CastToDate]
public Carbon $date;
}
use Attribute;
use bssphp\laraveldto\Attributes\Casts\CastInterface;
#[Attribute]
class MyCast implements CastInterface
{
public function castToType(mixed $value): mixed
{
return (string) $value;
}
}
use App\Models\Person;
use bssphp\laraveldto\AbstractModelData;
use bssphp\laraveldto\Attributes\ForModel;
use bssphp\laraveldto\Attributes\ModelAttribute;
/**
* @method Person toModel()
*/
#[ForModel(Person::class)]
class PersonData extends AbstractModelData
{
#[ModelAttribute]
public string $name;
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.