Как сохранить данные отношений вручную в Laravel Filament V3?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как сохранить данные отношений вручную в Laravel Filament V3?

Сообщение Anonymous »

У меня есть две модели Student и StudentFeePayment. Они имеют взаимно однозначное отношение, как показано ниже:

Код: Выделить всё

// In Student model
public function studentFeePayment()
{
return $this->hasOne(StudentFeePayment::class);
}

//In StudentFeePayment model
public function student() {
return $this->belongsTo(Student::class);
}
В файле StudentResource я пытаюсь реализовать пользовательскую логику сохранения связи StudentFeePayment.

Код: Выделить всё

Fieldset::make('Payment')
->relationship('studentFeePayment')
->schema([ ...... ])
Сначала я попытался реализовать getHeaderActions() внутри файла ListStudent, но элементы отношений недоступны, доступны только данные для модели ресурса (Student). Это нормальное поведение?

Код: Выделить всё

class ListStudents extends ListRecords
{
protected static string $resource = StudentResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make()->label('Register New Student')
->using(function (array $data, string $model): Model {
// Here $data does not contain relationship items
})
];
}
}
Далее по этой ссылке я попытался реализовать с помощью saveRelationshipsUsing()

Код: Выделить всё

Fieldset::make('Payment')
->relationship('studentFeePayment')
->schema([ .... ])
->saveRelationshipsUsing(function (Model $student, $state){
// Custom code to save relationship data
StudentService::createStudentFeePayment($student, $state);
})
Это работает только для действия Создать, если я установил false для второго параметра отношения(), как показано ниже:

Код: Выделить всё

Fieldset::make('Payment')
->relationship('studentFeePayment', false)
->schema([ .... ])
->saveRelationshipsUsing(function (Model $student, $state){
// Custom code to save relationship data
StudentService::createStudentFeePayment($student, $state);
})
Для действия Изменить/Обновить оно не работает, поскольку оно пыталось удалить существующую запись StudentFeePayment. Однако это работает, если я удалю настройку false во втором параметре Relations().
Так что, похоже, мне нужно установить false и true для действий «Создать» и «Обновить» соответственно.
Поэтому я хочу знать последовательный способ реализации пользовательского сохранения данных отношений в Laravel Filament.
Примечание. Я использую модальные окна действий для создания и редактирования действий.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ilament-v3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»