私のアプリケーションは、会社の従業員にデータ(例:住所)を編集する機能を提供します。彼らがそれを変更すると、マネージャは新しい情報で電子メールを受け取ります。問題は、従業員が更新をクリックするたびに電子メールが送信されることです。私はデータベースの情報を比較するためのアプリケーションが必要で、新しい情報がある場合にのみ電子メールを送信します。これを達成するための良い方法は何ですか? 申し訳ありませんが、私は言いたいことを忘れていました。電子メールには新しい情報が含まれている必要があります。だからisDirty()は私にとってはうまくいかないでしょう。ユーザーがプロファイルを新しいデータで更新する場合にのみ電子メールを送信します。 Laravel
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('[email protected]', 'Profile change');
$message->to('[email protected]');
$message->subject('Profile change: ' . $data['name']);
});
Session::flash('message', trans('app.global.saved'));
return back();
//return redirect()->route('profile.edit-credentials');
}
あなたが機能をisDirty使用することができます。http://stackoverflow.com/a/36330079/4771277 –