gpt4 book ai didi

php - Laravel 命令不保存和更新到数据库

转载 作者:行者123 更新时间:2023-11-30 21:53:12 25 4
gpt4 key购买 nike

我正在编写一个游戏模拟器,想创建一个 cron 作业来每天运行游戏。我正在使用 Laravel 的命令和调度程序来执行此操作。

任务很简单。我只想从数据库中提取一条记录并在每次命令运行时更新它。但是我注意到更改有时不会保存到数据库中。在过去的 4 天里,我尝试过调试,但它似乎非常随机,我没有看到任何模式。我打印更新前后的记录,显示更新正常。但是当我检查我的数据库时,有时它没有显示任何变化。好像有时更改会在更新后随机恢复。但我没有收到任何错误消息。除了 TeamRecord 记录外,我尝试更新其他对象并遇到相同的随机恢复问题。有什么我想念的吗?下面是我的 Laravel 命令的代码。我使用 php artisan games:run 来运行它。

namespace App\Console\Commands;

use Illuminate\Console\Command;
use DB;
use App\Game;
use App\MainLine;
use App\GameLog;
use App\TeamRecord;

class RunGames extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'games:run';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';

/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
// Get the record from the database
$record1 = $g->homeTeam()->teamRecords->sortByDesc('season_number')->first();
// This shows the current data
$this->info($record1);

// Update the record to the database
TeamRecord::where('id', $record1->id)->update(['games_played' => $record1->games_played + 1]);
// This always shows the data has changed. But when I check the database, sometimes the record did not change.
$this->info(TeamRecord::find($record1->id));
}

最佳答案

cron 用户可能没有对 storage/logs/laravel.log 以及它可能需要写入的任何其他内容的写入权限。

添加

\Log::error('This definitely should have run!');

handle() 的第一行,看看它是否有写入权限。您还可以使用它来进一步调试它。

关于php - Laravel 命令不保存和更新到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46270670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com