我剛剛為我當(dāng)前正在處理的 Laravel 項(xiàng)目設(shè)置了一個(gè) cron 作業(yè)。這是我命令中的句柄函數(shù)。public function handle() { Log::info("PayoutList Cron started!"); $tradersToPay = Investments::select('id', 'monthly_roi') ->where(DB::raw('CURDATE()'), '<=', 'end_date') ->where(DB::raw('DAY(CURDATE())'), '=', DB::raw('DAY(start_date)')) ->where('status', '=', 2) ->get(); foreach ($tradersToPay as $payout){ $row = [ 'investment_id' => $payout->id, 'roi' => $payout->monthly_roi, #'created_at' => date('Y-m-d H:i:s') ]; Payouts::create($row); } #$this->info('PayoutList Cron command executed successfully'); Log::info("PayoutList Cron command executed successfully"); }我已安排此命令在每天午夜運(yùn)行,它僅在日志文件中顯示日志消息,這意味著命令已執(zhí)行,但其間的查詢不在我的 cpanel 上運(yùn)行,而是在我的 Windows 本地服務(wù)器上運(yùn)行。我需要這方面的幫助。$schedule->command('payoutlist:cron') ->dailyAt('02:30') ->timezone('Africa/Lagos');我的主機(jī)只允許在 cron 作業(yè)上設(shè)置它,但它仍然工作正常*/5 * * * * /usr/local/bin/php /directorty/artisan schedule:run >> /dev/null 2>&1我正在使用 Laravel 5.8
2 回答

慕容3067478
TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
問(wèn)題源于這一行:
->where(DB::raw('CURDATE()'), '<=', 'end_date')
Laravel 期望第三個(gè)參數(shù)是一個(gè)值,因此它end_date
作為字符串而不是列名傳遞。由于您沒(méi)有傳遞任何實(shí)際值,因此將原始查詢中的整個(gè)位置轉(zhuǎn)換為:
->whereRaw('CURDATE() <= end_date')

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
您正在使用原始查詢嘗試使用 eloquent 來(lái)確保工作正常,或者比較本地和在線服務(wù)器之間的數(shù)據(jù)庫(kù)版本
而不是 DB::raw 使用這樣的東西: where('end_date', '>=', date('Ymd').' 00:00:00'));
- 2 回答
- 0 關(guān)注
- 187 瀏覽
添加回答
舉報(bào)
0/150
提交
取消