运行Laravel任务调度命令时,调用undefined方法illumb\Database\Eloquent\Builder::save()
我正试图安排一个活动,在 subendsat大于或等于当前时间运行Laravel任务调度命令时,调用undefined方法illumb\Database\Eloquent\Builder::save(),laravel,Laravel,我正试图安排一个活动,在 subendsat大于或等于当前时间 subendsat是用户表中的一列 在我的命令中,我有这个 我在windows中创建了这样的基本任务 我的.bat文件里有这个 c:\xampp\php\php.exe artisan计划:运行1>>NUL2>&1 转到Windows任务计划程序 单击创建基本任务,选择何时登录触发器,然后选择启动程序->您的.bat文件 选中“打开属性对话框”选项,然后单击“完成” 在“任务属性”中,单击“触发器”,然后单击“新建”并添加新触发器“
subendsat
是用户表中的一列
在我的命令中,我有这个
我在windows中创建了这样的基本任务
我的.bat文件里有这个
c:\xampp\php\php.exe artisan计划:运行1>>NUL2>&1
但这并不是在数据库运行时更新数据库。我不知道我在做什么。有人能提供建议吗?谢谢。是的,因为您返回的是一个集合,而不是一个条目 您可以批量更新您的条目:
User::update(['role' => 'subscriber'])
->where('subendsat', '>=', Carbon::now());
但我认为您不能这样做,您需要更新role\u id
字段:
$roleSubscriber = Role::where('name', 'subscriber')->first();
User::update(['role_id' => $role->getKey()])
->where('subendsat', '>=', Carbon::now());
您发布的代码不会抛出该错误。。。您没有
Builder
类的实例,因为->get()
返回一个集合。但无论如何,通过$user->role='subscriber'修改集合的属性代码>无效。。。您需要循环使用$users
(正确命名变量)并更新每个$user
:
$users = User::where('subendsat', '>=', Carbon::now())->get();
foreach ($users as $user) {
$user->role = 'subscriber';
$user->save();
}
或者调用批处理update()
:
什么,蝙蝠档案?它在哪里?它的内容是什么?我在bat文件c:\xampp\php\php.exe artisan schedule中有这个文件:run 1>>NUL 2>&1我从未使用过Windows。所以谷歌快速搜索给了我这个。这修复了错误,但调度程序不工作。请问我如何解决这个问题?“调度程序不工作”-你这是什么意思?当你说“有些东西不起作用”时,你通常需要解释为什么,就像它本身一样,这句话不是很有用……别忘了用一个chron作业从你的服务器操作系统运行调度器:@timliews。当subendsat
列>=当前时间时,我正在运行任务计划程序来更新用户数据库。但是当我运行操作/命令时。该列未得到更新。这就是我的意思,它不起作用。我已经在windows中创建了一个任务来运行cron。您的数据库中是否有subendsat
大于Carbon::now()
的记录?最简单的方法是将查询带到可以对结果执行dd()
的地方运行:dd(User::where('subendsat','>=',Carbon::now())->get()
将允许您查看所有结果,或者dd(User::where('subendsat','>=',Carbon now())->count()代码>将允许您显示要更新的行数。
$roleSubscriber = Role::where('name', 'subscriber')->first();
User::update(['role_id' => $role->getKey()])
->where('subendsat', '>=', Carbon::now());
$users = User::where('subendsat', '>=', Carbon::now())->get();
foreach ($users as $user) {
$user->role = 'subscriber';
$user->save();
}
User::where('subendsat', '>=', Carbon::now())->update([
'role' => 'subscriber'
]);