使用 laravel 将电子邮件传递给父用户

Posted

技术标签:

【中文标题】使用 laravel 将电子邮件传递给父用户【英文标题】:Pass email to the parent user using laravel 【发布时间】:2017-10-06 10:20:55 【问题描述】:
User_id     parent_id        email          username
1                abc@gmail.com      abc
2                xyz@gmail.com      xyz
3       5        data@gmail.com     
4                nod@gmail.com      nodata
5                getPar@gmail.com   parent

我想发送带有用户名的电子邮件,但是如果 parent_id 存在,它没有用户名,在这种情况下,我们将选择 parent_id = user_id 这意味着 user_id =3 有用户名 parent。

那么如何轻松做到这一点。

到目前为止我已经完成了

$user = User::where('email', Input::get('email'))
        ->where('type', Input::get('type'))
        ->active()
        ->first();
$data = [
            'name'     => $user->name,
            'email'    => $user->email,
            'username' => $user->username
        ];


 if($user->username == "" && $user->parent_id)
            $userParent = User::where('user_id', $user->parent_id)
                        ->active()
                        ->first();
        

Mail::later(5, 'emails.send', $data, function($message) use ($user)
        
            $message->from('n-r@abc.com', 'abc');
            $message->to($user->email, $user->name)->subject('ABC - Recovered Username');
        );

return Response::json([
            'success' => true,
            'message' => 'Recovered Username',
            'data'    => [
                'username' => $user->username
            ]
        ], 200);

在这样的要求上,想要获取用户名 == '' && parent_id 的数据,而不是将电子邮件发送给在上面的示例中 parent_id = user_id 的用户,而不是 user_id = 5 所以如果有人调用这比它应该通过电子邮件发送到 getPar@gmail.com 及其用户名

只是了解问题

User_id     parent_id        email                      username
1                     abc@gmail.com             abc
2                         abc@gmail.com             xyz
3        5                abc@gmail.com     
4                         abc@gmail.com             nodata
5                         data@gmail.com            parent

除了 user_id 3 之外,所有电子邮件 id 都相同,因为它有 parent_id,所以这个 id 没有用户名

对于这种情况,我们要获取 user_id = 5 中的 parent_id 的电子邮件 ID,即 data@gmail.com,我们会将用户名发送到此电子邮件 ID,否则具有用户名的正常流程将继续

【问题讨论】:

请协助解决这个问题 【参考方案1】:

更改 $data 的行位置,用 while 替换 if 条件,这样每当用户名 == '' 并且有父 id 时,它都会转到它的父级。 也使用 $user 代替 $userParent 并传递 $data。

$user = User::where('email', Input::get('email'))
        ->where('type', Input::get('type'))
        ->active()
        ->first();

while ($user->username == "" && $user->parent_id) 
    $user = User::where('user_id', $user->parent_id)
            ->active()
            ->first();


$data = [
    'name' => $user->name,
    'email' => $user->email,
    'username' => $user->username
];

Mail::later(5, 'emails.send', $data, function($message) use ($user) 
    $message->from('n-r@abc.com', 'abc');
    $message->to($user->email, $user->name)->subject('ABC - Recovered Username');
);

return Response::json([
            'success' => true,
            'message' => 'Recovered Username',
            'data' => [
                'username' => $user->username
            ]
                ], 200);

【讨论】:

无法始终获取父用户帐户详细信息 你的意思是上面的代码没有发送电子邮件到 getPar@gmail.com 这总是发送到 getPar@gmail.com 是否有人有用户名 问题可能出在第一个查询中。 Bcoz 电子邮件输入 abc@gmail.com 的活动第一条记录的用户 ID 为 3。因此它可能总是向其父级发送电子邮件,称为 data@gmail.com 我刚刚将 user_id 添加到它的所有工作中,感谢您的时间

以上是关于使用 laravel 将电子邮件传递给父用户的主要内容,如果未能解决你的问题,请参考以下文章

用于 api 的 Laravel/Lumen 电子邮件修剪

Laravel 5.4 - 单击电子邮件中的验证链接时未传递或发送电子邮件验证令牌令牌。

Laravel 5.2 将变量传递给查询生成器

如何通过重定向将数据传递到laravel中的视图

如何将参数传递到链式 Laravel Eloquent 关系中的位置

Laravel - 将自定义数据传递给电子邮件视图