bfg / bless_model
Recursive auto save eloquent Models
Installs: 74
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 0
Type:bfg-app
Requires
- php: ^8.0
- bfg/object: *
- bfg/text: *
- illuminate/contracts: *
README
The purpose of this package is to save, update, delete, force delete, and restore data using a recursive array. It understands both an associative array for working with one record, and with a dataset for working with several records at once.
Installation
You can install the library using composer:
composer require bfg/bless_model
Beginning of work
First, you need to design your models and their relationships.
How to use
For convenience, the main method has been brought into the alias BlessModel
.
All you need to do is call the do
method.
\BlessModel::do(\App\Models\User::class, []);
Let's imagine that our user model has the following relationships:
profile - hasOne
class Profile extends \Illuminate\Database\Eloquent\Model { protected $fillable = ["first_name","last_name","age","about"]; }
roles - belongsToMany
class Role extends \Illuminate\Database\Eloquent\Model { protected $fillable = ["slug","name"]; }
posts - hasMany
class Post extends \Illuminate\Database\Eloquent\Model { protected $fillable = ["subject","text"]; }
commentaries - morphMany
class Commentary extends \Illuminate\Database\Eloquent\Model { protected $fillable = ["text"]; }
And in order to fill in this data, you need to do the following:
\BlessModel::do(\App\Models\User::class, [ "name" => "DoctorWho", "email" => "user@test.com", "profile" => [ "first_name" => "Doctor", "last_name" => "Who", "age" => 2200, "about" => "An eccentric alien traveler of a great mind who fights injustice." ], "role" => [ "slug" => "time_lord", "name" => "Time Lord", ], "posts" => [ [ "subject" => "About TARDIS", "text" => "The TARDIS (Time And Relative Dimension In Space) is a time machine and spacecraft that appears in the British science fiction television series Doctor Who and its various spin-offs." ] ], "commentaries" => [ [ "text" => "Butterflies are cool!" ], [ "text" => "Yowzah!" ], [ "text" => "Geronimo!" ] ] ]);