<?php
namespace App;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class Recommendation extends Model
{
use HasFactory;
protected $fillable = [
'patient_id',
'referable_id',
'referable_type',
];
protected $appends = ['patient_referrer_name'];
public function patient()
{
return $this->belongsTo(Patient::class);
}
public function referrer()
{
return $this->morphTo();
}
public function getFullNameAttribute()
{
return $this->referrer->name . ' ' . $this->referrer->last_name. ' - '. $this->patient->full_name;
}
public function getPatientReferrerNameAttribute()
{
$patientName = $this->patient ? $this->patient->name : '';
$referrerName = $this->referrer ? $this->referrer->name : '';
return trim("{$patientName} {$referrerName}");
}
}
<?php
namespace AppNova;
use IlluminateHttpRequest;
use LaravelNovaFieldsBelongsTo;
use LaravelNovaFieldsID;
use LaravelNovaFieldsMorphTo;
use LaravelNovaHttpRequestsNovaRequest;
class Recommendation extends Resource
{
public static $model = AppRecommendation::class;
public static $title = 'full_name';
public static function availableForNavigation(Request $request)
{
return false;
}
public static $search = ['full_name'];
public static $group = 'Comisiones';
public static function label()
{
return 'Recomendaciones';
}
public static function singularlabel()
{
return 'Recomendación';
}
public function fields(Request $request)
{
return [
ID::make(__('ID'), 'id')
->sortable(),
BelongsTo::make('Paciente', 'patient', Patient::class)->searchable(),
MorphTo::make('Referente', 'referrer')->types([
User::class,
Affiliate::class,
Patient::class,
])->rules('required'),
];
}
public function cards(Request $request)
{
return [];
}
public function filters(Request $request)
{
return [];
}
public function lenses(Request $request)
{
return [];
}
public function actions(Request $request)
{
return [];
}
}`
enter image description here
I do not want the patient record to be selected a second time, I call my resource and when I do the validation to stop it from showing what is displayed in the select, it shows it
enter image description here
public function fields(Request $request)
{
return [
ID::make(__('ID'), 'id')
->sortable(),
BelongsTo::make('Paciente', 'patient', Patient::class)
->searchable(),
MorphTo::make('Referente', 'referrer')
->types($this->filterMorphToTypes($request))
->rules('required'),
];
}
protected function filterMorphToTypes(Request $request)
{
$patientId = $request->get('patient');
if (!$patientId) {
return [
User::class,
Affiliate::class,
Patient::class,
];
}
return [
User::class,
Affiliate::class,
Patient::where('id', '!=', $patientId),
];
}
Juan Carlos Hernandez Cruz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1