dev-master
9999999-devProvides HasFillableRelations trait to Eloquent models
MIT
The Requires
The Development Requires
by Troels Knak-Nielsen
Wallogit.com
2017 © Pedro Peláez
Provides HasFillableRelations trait to Eloquent models
This library provides a trait for mixing in to an Eloquent Model. Doing so will enable support for fillable relations., (*1)
To use, first require in your composer file:, (*2)
composer require troelskn/laravel-fillable-relations
Then, in your code:, (*3)
<?php
namespace MyApp\Models;
use Illuminate\Database\Eloquent\Model;
use LaravelFillableRelations\Eloquent\Concerns\HasFillableRelations;
class Foo extends Model
{
use HasFillableRelations;
protected $fillable_relations = ['bar'];
function bar()
{
return $this->hasOne(Bar::class);
}
}
class Bar extends Model
{
use HasFillableRelations;
protected $fillable_relations = ['foos'];
function foos()
{
return $this->hasMany(Foo::class);
}
}
And you can now fill relations, like so:, (*4)
$foo = new Foo(
[
'cuux' => 42,
'bar' => [
'id' => 42
]
]
);
Or perhaps:, (*5)
$foo = new Foo(
[
'cuux' => 42,
'bar' => [
'name' => "Ye Olde Pubbe"
]
]
);
And also:, (*6)
$bar = new Bar(
[
'name' => "Ye Olde Pubbe",
'foos' => [
[
'cuux' => 42
],
[
'cuux' => 1337
]
]
]
);
In order to automatically detach empty relations, pass an empty array:, (*7)
$bar->fill([
'foos' => [] // Detach all foos
]);
$bar->save();
You can use Laravel validator array rule to preserve empty arrays passed to the request:, (*8)
class UpdateRequest extends FormRequest
{
public function rules()
{
return [
'foos' => [
'array',
],
];
}
}
And then update attributes and relations in one line in the controller:, (*9)
public function update(UpdateRequest $request, Bar $bar)
{
$bar->fill($request->validated())->save();
}
Provides HasFillableRelations trait to Eloquent models
MIT