我有一個命令根據用戶保存的搜索條件向用戶發送郵件。現在我有這樣的:發送郵件後發送更新表格(Laravel命令)
public function handle()
{
$user = Alert::select('search', 'email', 'interval', 'emailSentAt')->join('users', 'alerts.uid', '=', 'users.id')->whereNotNull('search')->distinct()->get();
foreach ($user as $u) {
$cl = new SphinxSearch();
$results = $cl->search('@*' . $u->search, 'spots');
$results = $cl->limit(10);
$results = $cl->setMatchMode(\Sphinx\SphinxClient::SPH_MATCH_EXTENDED);
$results = $cl->setSortMode(\Sphinx\SphinxClient::SPH_SORT_ATTR_DESC, "start");
$results = $cl->get();
Mail::send('emails.newSearchAlert', ['u' => $u, 'results' => $results], function ($m) use ($u) {
$m->from('[email protected]', 'My company');
$m->to($u->email)->subject('Your search alert - ' . $u->search);
});
$u->emailSentAt = Carbon::now();
$u->save();
}
}
在這裏,我有兩個問題...
- 我如何保存每個用戶的發送日期和時間?我正在嘗試像代碼中顯示的那樣執行此操作。
$u->emailSentAt = Carbon::now();
和$u->save();
但它不更新任何內容...emailSentAt
保持爲NULL。 - 在我的數據庫中,我有一列
interval
(它在$user
變量中被選中)。間隔的值爲1或2,分別爲每日或每週警報。我怎樣才能讓命令按照用戶間隔的偏好運行?如果是日常的,我需要的電子郵件被每天發送...
'$ u'不是用戶對象。嘗試在你的foreach循環中加載用戶對象並修改它。 – aynber
我不確定你說什麼......它與用戶沒有任何關係。它是一個Alert類型的對象。 :/ ...需要更新的列在警報表中。 – harunB10
試過'$ u-> update(['emailSentAt'=> Carbon \ Carbon :: now()]);'? – linktoahref