首页 > 解决方案 > Laravel 非静态方法 Mavinoo\LaravelBatch\LaravelBatch::update() 不应静态调用

问题描述

在 laravel proyect 我在通知控制器中有这个错误

尝试打开通知时出现错误,通知已发送,但打开通知时必须查看的用户出现错误。

Error: Non-static method Mavinoo\LaravelBatch\LaravelBatch::update() should not be called statically Line: C:\xampp\htdocs\laravel\Unifiedtransform-master\app\Http\Controllers\NotificationController.php:28

在这段代码中:

* Display a listing of the resource.

 *

 * @return \Illuminate\Http\Response

 */

public function index($id)

{

  $msg = Notification::with('teacher.department')->where('student_id',$id)->orderBy('id','desc')->paginate(10);

  $msgs = [];

  foreach($msg as $m){

    $msgs[] = [

        'id' => $m->id,

        'active' => 0,

        'updated_at' => date('Y-m-d H:i:s'),

      ];

  }

  LaravelBatch::update('notifications',(array) $msgs,'id');

  return view('message.all',['messages'=>$msg]);

}

/**

 * Show the form for creating a new resource.

 *

 * @return \Illuminate\Http\Response

 */

public function create()

{

    //

}

标签: phplaravel

解决方案


因此,您在已将方法定义为非静态的类上静态调用方法。通常你会得到一个类的实例,然后在这种情况下调用方法,但很可能你正在尝试使用 Facade 而不是这里的底层类。

您想用来Mavinoo\LaravelBatch\LaravelBatchFacade拨打电话,而不是 Mavinoo\LaravelBatch\LaravelBatch. config/app.php您在for中的别名Batch未指向外观,或者您正在导入未引用该类的类。

use Mavinoo\LaravelBatch\LaraveBatchFacade as LaravelBatch;

或者如果您正确设置了别名:

use LaravelBatch;

请参考您正在使用的版本中此包的文档,以了解如何定义别名。


推荐阅读