morningtrain/laravel-fields

1.17.0 2023-05-08 05:04 UTC

README

Install

Via Composer

$ composer require morningtrain/laravel-fields

Features

A field is at its core responsible for taking a request value and applying it to an eloquent model attribute.

Applying fields

Having a field and a model instance, it can be applied like this:

$field->update($model, $request, FieldContract::BEFORE_SAVE);

and the following for post-save.

$field->update($model, $request, FieldContract::AFTER_SAVE);

Some fields will know that it should run before saving the model (like setting a basic attribute value) while some fields should be run after (attaching related models).

A more complete example would be:

$request = request();

if (is_array($fields) && !empty($fields)) {

    foreach ($fields as $field) {
        $field->update($model, $request, FieldContract::BEFORE_SAVE);
    }

    $model->save();

    foreach ($fields as $field) {
        $field->update($model, $request, FieldContract::AFTER_SAVE);
    }

}

The example uses the following classes:

use Illuminate\Database\Eloquent\Model;
use MorningTrain\Laravel\Fields\Contracts\FieldContract;

Fields

Basic field

Field::create('name_of_attribute')

Hidden (static) field

Field::hidden('name_of_attribute', 'value to apply')

Belongs to many field

Field::belongsToMany('name_in_request')
    ->relation('name_of_relation')
    ->removeMissing()

Credits

This package is developed and actively maintained by Morningtrain.

 _- _ -__ - -- _ _ - --- __ ----- _ --_  
(         Morningtrain, Denmark         )
 `---__- --__ _ --- _ -- ___ - - _ --_ ´ 
     o                                   
    .  ____                              
  _||__|  |  ______   ______   ______ 
 (        | |      | |      | |      |
 /-()---() ~ ()--() ~ ()--() ~ ()--() 
--------------------------------------