I want to retrieve the title data from the proposal table, but I always get an error like this
progressReport model :
class ProgressReport extends Model
{
use HasFactory;
protected $guarded = ['id'];
protected $casts = ['precentation' => 'date'];
const PROGRESS_PATH = 'public/data/Report/Progress';
const PROGRESS_REPORT = 'Progress';
const FINAL_REPORT = 'Final';
public function user()
{
return $this->belongsTo(User::class, 'user_id');
}
public function proposal()
{
return $this->belongsTo(Proposal::class, 'proposal_id');
}
public function getPathFile($file)
{
$uploadFileName = Str::of($file->getClientOriginalName())->replace(' ', '-');
$fileName = pathinfo($uploadFileName, PATHINFO_FILENAME);
$fileExtension = $file->getClientOriginalExtension();
$name = $fileName . '-' . now()->format('dmyhis') . '.' . $fileExtension;
$fileUrl = $file->storeAs(ProgressReport::PROGRESS_PATH, $name);
return $fileUrl;
}
}
proposal model
class Proposal extends Model
{
use HasFactory;
const PROPOSAL_PATH = 'public/data/proposal';
protected $guarded = ['id'];
public function user()
{
return $this->belongsTo(User::class);
}
public function progressReport()
{
return $this->hasMany(ProgressReport::class);
}
}
user model
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
const LECTURER = 'Dosen';
const ADMIN = 'Admin';
const REVIEWER = 'Reviewer';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
public const LECTURER_PATH = "public/images/Lecturer";
public const REVIEWER_PATH = "public/images/Reviewer";
protected $table = 'users';
protected $guarded = ['id'];
protected $fillable = ['nidn', 'fullname', 'email', 'password', 'faculty', 'major', 'telp', 'birthdate', 'gender', 'address', 'image'];
public function proposal()
{
return $this->hasMany(Proposal::class);
}
public function progressReport()
{
return $this->hasMany(ProgressReport::class);
}
}
progressreport controller
protected function store(LecturerReportRequest $request, ProgressReport $progress)
{
$this->authorize('isLecturer', auth()->user());
$data = $request->validated();
$status = ProgressReport::PROGRESS_REPORT;
$user_id = auth()->user()->id;
$fileName = ($request->hasFile('document_report')) ? $data['document_report'] = $progress->getPathFile($request->document_report) : "file not found";
$data = [
'fullname' => auth()->user()->fullname,
'status_report' => $status,
'document_report' => $fileName,
'title' => $progress->proposal->title, // error from here
'proposal_id' => $request->proposal_id,
'user_id' => $user_id,
];
ProgressReport::create($data);
Mail::to('[email protected]')->send(new SendProgressMail($data));
return redirect()->route('lpp.lecturer-progress-report.index')->with('success', 'success!');
}