eloverde-sistemas/laravel-crud-builder
54,422
| Install | |
|---|---|
composer require eloverde-sistemas/laravel-crud-builder |
|
| Latest Version: | v1.0.5 |
| PHP: | ^8.3|^8.4 |
| License: | MIT |
| Last Updated: | Mar 20, 2025 |
| Links: | GitHub · Packagist |
Maintainer: EloverdeTech
Create and update Eloquent models from API Requests
This package allows you to create and update your Eloquent model and sync relationships based on a request. Request parameter names follow the JSON API specification as closely as possible.
Note: Inspired in Spatie's query builder package.
Basic usage
Create a model based on a Request:
Request body:
{
data: {
attributes: {
name: 'Paul',
age: 77
}
}
}
PHP controller code:
use CrudBuilder\CrudBuilder;
$singer = CrudBuilder::for(Singer::class)
->allowedAttributes('age', 'name')
->create();
//A singer is created in database with the request data
Update a model based on a Request:
Request body:
{
data: {
id: 1,
attributes: {
name: 'Paul',
age: 77
}
}
}
PHP controller code:
use CrudBuilder\CrudBuilder;
$singer = CrudBuilder::for(Singer::class)
->allowedAttributes('age', 'name')
->update();
//A singer with the requested id is updated in database with the request data
Is sure possible to create or update based on the presence of ID in the Request with the ->createOrUpdate() method.
Update a model based on a Request, ignoring some attributes:
Request body:
{
data: {
id: 1,
attributes: {
name: 'Paul',
surname: 'McCartney',
age: 77
}
}
}
PHP controller code:
use CrudBuilder\CrudBuilder;
$singer = CrudBuilder::for(Singer::class)
->ignoreAttributes('age', 'surname')
->allowedAttributes('name')
->update();
//A singer with the requested id is updated in database with the request data, except the ignored attributes
Update a model based on a Request, including relationships:
Request body:
{
data: {
id: 1,
attributes: {
name: 'Paul'
},
relationships: {
band: {
data: {
id: 1
}
}
}
}
}
PHP model code:
class SingerModel extends Model
{
public function band()
{
return $this->belongsTo(Band::class);
}
}
PHP controller code:
use CrudBuilder\CrudBuilder;
$singer = CrudBuilder::for(Singer::class)
->allowedAttributes('name')
->allowedRelations('band')
->update();
//A singer with the requested id is updated in database with the request data, including the relationship
Note: The only supported relationships so far are: BelongsTo and HasMany.
Related Packages
erirk/paypalpayment
laravel-paypalpayment is simple package help you process direct credit card paym...
0
doctrine/dbal
Powerful PHP database abstraction layer (DBAL) with many features for database s...
628,058,007
9,707