Para integrar los campos de los registros en el resto de productos académicos, se requiere realizar una secuencia de cambios de cada uno de los productos, los cambios a realizar son:
Agregar una llave foránea al usuario en la migración del modelo a modificar.
$table->foreignId('user_id')->constrained();
Modificar el modelo correspondiente para incluir el campo user_id en su $fillable.
Implementar las relaciones user() y registro(), siendo la primera una relación 1-1 clásica y la segunda una relación 1-1 polimórfica.
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class);
}
public function registro(): \Illuminate\Database\Eloquent\Relations\MorphOne
{
return $this->morphOne(Registro::class, 'registrable');
}
4. Agregar un campo de tipo `Hidden` al inicio del _schema_ del formulario del recurso, para almacenar el propietario del producto académico.
```php
return $form
->schema([
Forms\Components\Hidden::make('user_id')
->default(auth()->user()->id),
Importar RegistroResource y el modelo User en el recurso correspondiente.
use App\Filament\Resources\RegistroResource;
use App\Models\User;
Agregar una Section al final del schema del formulario del recurso, importando los campos del formulario de RegistroResource.
Forms\Components\Section::make('Información de Registro')
->relationship('registro')
->schema(RegistroResource::form($form)->getComponents())
->columns(2),
]);
Agregar la función getEloquentQuery(), antes de la función shouldRegisterNavigation(); esta nueva función sirve para que el usuario activo, solo visualice sus registros y no registros de otros usuarios.
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()->where('user_id', auth()->user()->id);
}
Se deben repetir todos los cambios anteriores en cada uno de los productos académicos, para que puedan guardar su información en conjunto con el registro.
Para integrar los campos de los
registros
en el resto de productos académicos, se requiere realizar una secuencia de cambios de cada uno de los productos, los cambios a realizar son:user_id
en su$fillable
.user()
yregistro()
, siendo la primera una relación 1-1 clásica y la segunda una relación 1-1 polimórfica.public function registro(): \Illuminate\Database\Eloquent\Relations\MorphOne { return $this->morphOne(Registro::class, 'registrable'); }
RegistroResource
y el modeloUser
en el recurso correspondiente.RegistroResource
.getEloquentQuery()
, antes de la funciónshouldRegisterNavigation()
; esta nueva función sirve para que el usuario activo, solo visualice sus registros y no registros de otros usuarios.Se deben repetir todos los cambios anteriores en cada uno de los productos académicos, para que puedan guardar su información en conjunto con el registro.