Home > other >  How to pass data from database to Mailable?
How to pass data from database to Mailable?

Time:11-03

I know how to pass data to view but how do you pass data to a mailable? I'm also a bit confused on where to put the database call DB::select, in the controller or the mailable? So far I've tried this:

web.php:

Route::get('/test-email', 'App\Http\Controllers\TestMailController@test');

TestMailController.php:

<?php

namespace App\Http\Controllers;

use App\Mail\ContactMail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;

class TestMailController extends Controller
{
    public function test()
    {
        return new ContactMail();
    }
}

TestMail.php:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use phpDocumentor\Reflection\DocBlock\Tags\Var_;

class TestMail extends Mailable implements ShouldQueue
{
    use Queueable, SerializesModels;

    public $data;

    public function __construct()
    {
        $this->data = DB::select('select * from db_name');
    }

    public function build()
    {
        return $this->markdown('emails.testmail')->with('data', $data);
    }
}

CodePudding user response:

You need to use $this :

public function build()
{
    return $this->markdown('emails.testmail')->with('data', $this->data);
}
  • Related