Начнем с того, что я новичок в рюкзаке CRUD, но я не нашел ответа на свою конкретную проблему.
У меня есть 2 таблицы, users
и usersprofiles
. Все профили пользователей можно создавать / редактировать через CRUD. Когда я создаю новый профиль, я создаю его автоматически. Мой профиль belongsTo
a user
и user
hasOne
профиль.
На моей панели userprofile
CRUD я хочу изменить адрес электронной почты и пароль, принадлежащие пользователю. Я добавил отображаемые поля и с нетерпением жду загрузки связанного с ним пользователя.
Когда я создаю профиль, все работает отлично! Но когда я хочу обновить, все поля, которых нет в модели профиля, не обновляются. Более того, наблюдатель вообще не используется.
Мой вопрос прост, есть ли простой способ обновить простые текстовые поля в отношении.
Спасибо
основной контроллер CRUD:
class PatientCrudController extends PatientAidantBaseController
{
use ReviseOperation;
/**
* Setup
*
* @return void
*/
public function setup()
{
$this->crud->setModel(Patient::class);
$this->crud->with('user');
$this->crud->setRoute(config('backpack.base.route_prefix') . '/patient');
$this->crud->setEntityNameStrings('patient', 'patients');
}
/**
* SetupListOperation
*
* @return void
*/
protected function setupListOperation()
{
parent::setupListOperation();
$this->crud->addColumn(
[
'name' => 'numeroHedonix',
'label' => "Numéro Hedonix",
'type' => 'text'
]
);
}
/**
* SetupCreateOperation
*
* @return void
*/
protected function setupCreateOperation()
{
$this->crud->addFields([
[ 'name' => 'numeroHedonix',
'type' => 'text',
'label' => 'Numéro Hedonix',
'default' => Patient::getNextHedonixNumber(),
'wrapper' => [
'class' => 'form-group col-md-4',
],
'attributes' => [
'readonly' => 'readonly',
],
'tab' => 'Informations patient'
],
]);
$this->crud->addFields($this->baseCreationFields());
$this->crud->addFields([
[ 'name' => 'NIP',
'type' => 'text',
'label' => 'NIP',
'wrapper' => [
'class' => 'form-group col-md-6',
],
'tab' => 'Informations patient'
],
[ 'name' => 'NID',
'type' => 'text',
'label' => 'NID',
'wrapper' => [
'class' => 'form-group col-md-6',
],
'tab' => 'Informations patient'
],
]);
$this->crud->setValidation(PatientRequest::class);
}
/**
* SetupUpdateOperation
*
* @return void
*/
protected function setupUpdateOperation()
{
$this->setupCreateOperation();
}
}
Это расширяет этот контроллер, чтобы объединить функции и поля:
<?php
namespace App\Http\Controllers\Admin;
use App\User;
use App\Enums\SexePatient;
use App\Enums\NiveauEtudePatient;
use Backpack\CRUD\app\Http\Controllers\CrudController;
use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD;
abstract class PatientAidantBaseController extends CrudController
{
use \Backpack\CRUD\app\Http\Controllers\Operations\ListOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation;
/**
* SetupListOperation
*
* @return void
*/
protected function setupListOperation()
{
$this->crud->addColumn(
[
'name' => 'prenom',
'label' => "Prénom",
'type' => 'text'
]
);
$this->crud->addColumn(
[
'name' => 'nom',
'label' => "Nom",
'type' => 'text'
]
);
$this->crud->addColumn(
[
'name' => 'dateDeNaissance',
'label' => "Date de naissance",
'type' => 'date'
]
);
}
protected function baseCreationFields()
{
return [
[ 'name' => 'nom',
'type' => 'text',
'label' => 'Nom',
'wrapper' => [
'class' => 'form-group col-md-4'
],
'tab' => 'Informations patient'
],
[ 'name' => 'prenom',
'type' => 'text',
'label' => 'Prénom',
'wrapper' => [
'class' => 'form-group col-md-4'
],
'tab' => 'Informations patient'
],
[ 'name' => 'sexe',
'label' => 'Sexe',
'type' => 'select_from_array',
'options' => SexePatient::toSelectArray(),
'allows_null' => false,
'default' => 'M',
'wrapper' => [
'class' => 'form-group col-md-4'
],
'tab' => 'Informations patient'
],
[ 'name' => 'dateDeNaissance',
'type' => 'date',
'label' => 'Date de naissance',
'wrapper' => [
'class' => 'form-group col-md-4'
],
'tab' => 'Informations patient'
],
[ 'name' => 'dateDeDeces',
'type' => 'date',
'label' => 'Date de décès',
'allows_null' => true,
'default' => null,
'wrapper' => [
'class' => 'form-group col-md-4'
],
'tab' => 'Informations patient'
],
[ 'name' => 'niveauEtude',
'label' => "Niveau d'étude",
'type' => 'select_from_array',
'options' => NiveauEtudePatient::toSelectArray(),
'allows_null' => true,
'default' => null,
'tab' => 'Informations patient'
],
[ 'name' => 'user_id',
'type' => 'hidden',
'default' => null
],
[ 'name' => 'user.email',
'label' => 'Adresse email',
'type' => 'email',
'tab' => 'Informations patient'
//'tab' => 'Création du compte'
],
[ 'name' => 'password',
'label' => 'Mot de passe',
'type' => 'password',
'tab' => 'Informations patient'
//'tab' => 'Création du compte'
],
[ 'name' => 'password_confirmation',
'label' => 'Confirmation mot de passe',
'type' => 'password',
'tab' => 'Informations patient'
//'tab' => 'Création du compte'
],
];
}
}