Download the PHP package illuminatech/sync-many-attribute without Composer
On this page you can find all versions of the php package illuminatech/sync-many-attribute. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download illuminatech/sync-many-attribute
More information about illuminatech/sync-many-attribute
Files in illuminatech/sync-many-attribute
Package sync-many-attribute
Short Description Allows control over Eloquent many-to-many relation via array attribute
License BSD-3-Clause
Informations about the package sync-many-attribute
Sync Eloquent Many-to-Many via Array Attribute
This extension allows control over Eloquent many-to-many relations via array attributes.
For license information check the LICENSE-file.
Installation
The preferred way to install this extension is through composer.
Either run
or add
to the require section of your composer.json.
Usage
This extension allows control over Eloquent many-to-many relations via array attributes.
Each such attribute matches particular BelongsToMany
relation and accepts array of related model IDs.
Relations will be automatically synchronized during model saving.
Note: in general such approach makes a little sense, since Eloquent already provides fluent interface for many-to-many relation synchronization. However, this extension make come in handy while working with 3rd party CMS like Nova, where you have a little control over model saving and post processing. Also it may simplify controller code, removing relation operations in favor to regular attribute mass assignment.
In order to use the feature you should add \Illuminatech\SyncManyAttribute\SyncManyToManyAttribute
trait to your model class
and declare syncManyToManyAttributes()
method, defining attributes for relation synchronization. This method should return
an array, which each key is the name of the new virtual attribute and value is the name of the relation to be synchronized.
For example:
Usage example:
You may use sync attributes during HTML form input composition. For example:
Controller code example:
Note: remember you need to add the names of attribute for many-to-many synchronization to
\Illuminate\Database\Eloquent\Model::$fillable
in order to make them available for mass assignment.
Pivot attributes setup
You may setup the pivot attributes, which should be saved during each relation synchronization. To do so, you should define
the sync attribute as an array, which key defines relation name and value - the pivot attributes. \Closure
can be used
here for definition of particular pivot attribute value or entire pivot attributes set.
For example:
You may use \Illuminatech\SyncManyAttribute\ManyToManyAttribute
to create sync attribute definition in more OOP style:
Defined pivot attributes will be automatically saved during relation synchronization on model saving:
Nova Integration
One of the main benefit of this extension is support of 3rd party CMS like Nova. You may use sync attributes, allowing user to setup many-to-many relation directly from create/update form, instead of operating separated listing from details page.
You can create input for BelongsToMany
relation as multiple select or checkbox list.
Packages like fourstacks/nova-checkboxes might be used for such fields.
The final Nova resource may look like following: