Как установить значение поля на основе других значений поля перед сохранением - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть таблица с именем студентов, в которой есть столбцы first_name, last_name и full_name. Я хочу, чтобы значение full_name было установлено с first_name .' '. last_name до того, как значения будут сохранены в базе данных.

Является ли public function store(StoreRequest $request) лучшим местом и какой код требуется?

        $this->crud->addField([
        'name' => 'first_name',
        'type' => 'text',
        'label' => "First Name",
        'tab' => 'Details'
        ]);
        $this->crud->addField([
        'name' => 'last_name',
        'type' => 'text',
        'label' => "Last Name",
        'tab' => 'Details'
        ]);

        $this->crud->addField([
        'name' => 'full_name',
        'type' => 'text',
        ]);



        // add asterisk for fields that are required in StudentRequest
        $this->crud->setRequiredFields(StoreRequest::class, 'create');
        $this->crud->setRequiredFields(UpdateRequest::class, 'edit');
        $this->crud->allowAccess('show');

    }

    public function store(StoreRequest $request)
    {
        // your additional operations before save here

        $redirect_location = parent::storeCrud($request);
        // your additional operations after save here
        // use $this->data['entry'] or $this->crud->entry
        return $redirect_location;
    }

Спасибо.

1 Ответ

1 голос
/ 11 апреля 2019

Один из правильных способов сделать это - использовать красноречивые события модели Laravel.

Вы можете использовать событие creating модели Student. Событие creating происходит непосредственно перед сохранением модели в базе данных.

Вы можете связать событие создания модели студента в функции AppServiceProvider boot

AppServiceProvider

use App\Models\Student;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Student::creating(function ($student) {
            $student->full_name = $student->first_name.' '.$student->last_name;
        });
    }
}
...