Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行Laravel任务调度命令时,调用undefined方法illumb\Database\Eloquent\Builder::save()_Laravel - Fatal编程技术网

运行Laravel任务调度命令时,调用undefined方法illumb\Database\Eloquent\Builder::save()

运行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大于或等于当前时间

subendsat
是用户表中的一列

在我的命令中,我有这个

我在windows中创建了这样的基本任务 我的.bat文件里有这个

c:\xampp\php\php.exe artisan计划:运行1>>NUL2>&1

  • 转到Windows任务计划程序
  • 单击创建基本任务,选择何时登录触发器,然后选择启动程序->您的.bat文件
  • 选中“打开属性对话框”选项,然后单击“完成”
  • 在“任务属性”中,单击“触发器”,然后单击“新建”并添加新触发器“每隔-1分钟重复一次任务”
  • 但是当我运行命令时

    php artisan命令:更新,返回错误

    调用未定义的方法Illumb\Database\Eloquent\Builder::save()


    但这并不是在数据库运行时更新数据库。我不知道我在做什么。有人能提供建议吗?谢谢。

    是的,因为您返回的是一个集合,而不是一个条目

    您可以批量更新您的条目:

    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'
    ]);