Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

mhmmdva's avatar

how to retrieve email by customizing user id

So I want to send an email notification to the lecturer because it has been reviewed by the reviewer. This table has relationships between users, proposals, revisions. The user table has 3 roles containing ADMIN, LECTURER, REVIEWER

Data Proposal Revision Controller

public function store(RevisionRequest $request, Proposal $proposal){

        $this->authorize('asView', auth()->user());

        $data = $request->validated();

        if ($request->hasFile('file')) {
            $file = $request->file('file');
            $uploadFileName = Str::of($file->getClientOriginalName())->replace(' ', '-');
            $fileName = pathinfo($uploadFileName, PATHINFO_FILENAME);
            $fileExtension = $file->getClientOriginalExtension();
            $name = $fileName . '-' . now()->format('dmyhis') . '.' . $fileExtension;
            $fileUrl = $file->storeAs(Revision::REVISION_PATH, $name); // given the name with storeAs()
            $data['file'] = $fileUrl;
        }

        $revision = new Revision();
        $revision->subject = $request->subject;        
        $revision->suggestion = $request->suggestion;
        $revision->criticism = $request->criticism;
        $revision->file = $request->file;
		// relationships
        $revision->user_id = $data['user_id'] = auth()->user()->id;
        $revision->proposal_id = $data['proposal_id'] = $proposal->id;

        $revision->save(); // insert
        
        Mail::send('emails.revision', ['data' => $data], function ($message) use ($data) {
            $message->from('[email protected]', 'Administrator'); // admin
            $message->subject($data['subject']);           

            // $id = User::where('user_id', 12)->pluck('email')->toArray();                        

            $lecturerEmails = User::where('role', 'Lecturer')->pluck('email')->toArray(); 
            
            // want to retrieve the lecturer's email which has been revised by the reviewer

            $message->to($lecturerEmails); // email lecturer
        });

        return redirect()->route('lpp.data-proposal.revision.index', $proposal->id)->with('success', 'success !');

    }
0 likes
2 replies
tisuchi's avatar
tisuchi
Best Answer
Level 70

@mhmmdva How about this?

// in Proposal.php

public function lecturer() {
    return $this->belongsTo(User::class, 'user_id');
}

Now update your controller:

// Get the lecturer for this proposal
$lecturer = $proposal->lecturer;

// Now in your Mail::send()...
Mail::send('emails.revision', ['data' => $data], function ($message) use ($data, $lecturer) {
    $message->from('[email protected]', 'Administrator'); // admin
    $message->subject($data['subject']);
    
    // Now just use the lecturer's email
    $message->to($lecturer->email); // email of lecturer who owns the proposal
});
1 like
mhmmdva's avatar

@tisuchi thank you very much, this works. I never thought that it could be made like this

public function lecturer() {
    return $this->belongsTo(User::class, 'user_id');
}
2 likes

Please or to participate in this conversation.