troelskn / laravel-fillable-relations
为 Eloquent 模型提供 HasFillableRelations 特性
dev-master
2021-10-29 14:50 UTC
Requires
- illuminate/database: >=5.3
Requires (Dev)
- mockery/mockery: ^0.9.4
- orchestra/database: 3.3.1
- orchestra/testbench: 3.3
- phpunit/phpunit: ~5.7
This package is not auto-updated.
Last update: 2024-09-13 17:10:20 UTC
README
此库提供了一种特性,可以混合到 Eloquent 模型中。这样做将启用对可填充关系的支持。
使用方法:首先在您的 composer 文件中引入
composer require troelskn/laravel-fillable-relations
然后,在您的代码中
<?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); } }
现在您可以填充关系,例如
$foo = new Foo( [ 'cuux' => 42, 'bar' => [ 'id' => 42 ] ] );
或者可能是
$foo = new Foo( [ 'cuux' => 42, 'bar' => [ 'name' => "Ye Olde Pubbe" ] ] );
还有
$bar = new Bar( [ 'name' => "Ye Olde Pubbe", 'foos' => [ [ 'cuux' => 42 ], [ 'cuux' => 1337 ] ] ] );
为了自动断开空关系,传递一个空数组
$bar->fill([ 'foos' => [] // Detach all foos ]); $bar->save();
您可以使用 Laravel 验证器数组规则来保留传递到请求中的空数组
class UpdateRequest extends FormRequest { public function rules() { return [ 'foos' => [ 'array', ], ]; } }
然后在控制器中一行更新属性和关系
public function update(UpdateRequest $request, Bar $bar) { $bar->fill($request->validated())->save(); }