根据 Laravel 中的下拉选择发送电子邮件

Sending an email based on a dropdown selection in Laravel

我是 Laravel 的新手,正在尝试了解如何根据下拉列表 selection 向某人发送电子邮件。我正在使用 Laravel 7。我将在下面解释我的情况:

在注册时,我通过从数据库中检索特许经营权并将特许经营权 ID 保存在用户 table 中,为用户提供 select 特许经营权的选项。成功注册后,我想向属于 selected 特许经营权的电子邮件地址发送一封电子邮件,以便他们批准该用户。

目前设置为将电子邮件发送到主站点管理员,这不是我想要的。

这是我的注册函数:

protected function create(array $data)
    {   
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'franchise_id' => $data['franchise_id'],
        ])->assignRole('User');

        $admin = User::where('Admin', 1)->first();
        if ($admin) {
            $admin->notify(new NewParentRegistration($user));
        }

    return $user;
    } 

这是我的 blade 文件中用于选择注册特许经营权的下拉菜单 selection:

<div class="form-group row">
                            <label for="franchise" class="col-md-4 col-form-label text-md-right">Choose your Franchise</label>

                            <div class="col-md-6">
                                <select name="franchise_id" id="franchise" class="form-control">
                                    @foreach ($franchises as $franchise)
                                        <option value="{{ $franchise->id }}">{{ $franchise->franchise_name }}</option>
                                    @endforeach
                                </select>

                                @error('name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div> 

我要触发的电子邮件地址位于我的 Franchise table 中,其中有一个 franchise 电子邮件列。

那么我如何修改下面的代码以在注册页面上获取 selected 特许经营权的电子邮件地址?

$admin = User::where('Admin', 1)->first();
        if ($admin) {
            $admin->notify(new NewParentRegistration($user));
        } 

如果您的 Franchise 模型在数据库中定义了 email 列,您可以将电子邮件直接发送到 Franchise

protected function create(array $data)
{
    return User::create([
        'name'          => $data['name'],
        'email'         => $data['email'],
        'password'      => Hash::make($data['password']),
        'franchise_id'  => $data['franchise_id'],
    ])->assignRole('User');

    $franchise = Franchise::find($data['franchise_id']);
    // Notify the franchise...
    $franchise->notify(new NewParentRegistration($user));

    return $user;
}

不要忘记 - 为了使它起作用,您还必须 use the Notifiable trait 在特许经营模式中。