仅当用户使用新数据更新配置文件时才发送电子邮件。 Laravel

时间:2017-05-11 13:06:36

标签: php laravel email

我的应用程序为公司员工提供编辑其数据的能力(例如:地址)。一旦他们改变了任何一个,经理就会收到一封包含他们新信息的电子邮件。问题是每次员工点击更新时都会发送电子邮件。我需要应用程序来比较数据库中的信息,只有在有新信息时才发送电子邮件。有什么好办法实现这个目标? 对不起,我忘了提,电子邮件只需要包含新的iformation。所以isDirty()对我不起作用。

public function editcredentials_action(Request $request)
{
    $user = Auth::user();
    $address = $user->address;

    $this->validate($request, [
        'password' => 'max:255',
        'language' => 'integer',
        'facebook_profile' => 'max:255',
        'twitter_profile'  => 'max:255',

        'street'       => 'max:255',
        'house_number' => 'max:255',
        'city'         => 'max:255',
        'zip_code'     => 'max:255',
        'country'      => 'max:255',
    ]);


    if (!empty($request->get('password')) && $request->get('password')) {
        $user->password = bcrypt($request->get('password'));
    }
    $user->facebook_profile = $request->get('facebook_profile');
    $user->twitter_profile = $request->get('twitter_profile');
    $user->language_id = $request->get('language');
    $user->save();

    if (!$address) {
        $address = new UserAddress();
        $address->user_id = $user->id;
    }
    $address->street = $request->street;
    $address->house_number = $request->house_number;
    $address->city = $request->city;
    $address->zip_code = $request->zip_code;
    $address->country = $request->country;
    $address->save();

    $data = [
        'email'    => $user->email,
        'facebook' => $user->facebook_profile,
        'twitter'  => $user->twitter_profile,
        'name'     => $user->name . ' ' . $user->lastname,
        'address'  => $address,
    ];


    Mail::send('emails.user-update', $data, function ($message) use ($data) {
        $message->from('no-reply@example.com', 'Profile change');
        $message->to('profilechange@example.com');
        $message->subject('Profile change: ' . $data['name']);
    });


    Session::flash('message', trans('app.global.saved'));
    return back();
    //return redirect()->route('profile.edit-credentials');
}

1 个答案:

答案 0 :(得分:1)

我不认为 reg query HKLM\Software\Wow6432Node\Atria\ClearCase\CurrentVersion /v ClearCaseGroupName 可以在这里工作,但您可以在开头保存用户数据:

isDirty()

然后使用$params = ['language', 'facebook_profile', 'twitter_profile', 'name']; $oldUserData = auth()->user()->only($paramsToCOmpare); 方法比较数据:

save()

您可以对if (count(array_diff($oldUserData, $user->only($paramsToCompare))) > 0) { // Data was changed. } 模型执行相同的操作。对于密码,只需检查表单中是否填写了密码(因为您还没有显示它):

UserAddress