Php 不应静态调用非静态方法App\User::getallreferrals()

Php 不应静态调用非静态方法App\User::getallreferrals(),php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,我试图在控制器中调用模型内的函数,但出现此错误 (1/1)不应静态调用ErrorException非静态方法App\User::getallreferrals()。在HomeController.php中(第37行) 这是我的模型 } 然后是我的控制器 <?php namespace App\Http\Controllers; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; use App\Http\Co

我试图在控制器中调用模型内的函数,但出现此错误

(1/1)不应静态调用ErrorException非静态方法App\User::getallreferrals()。在HomeController.php中(第37行)

这是我的模型

}

然后是我的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Http\Controllers\DateTime;
use App\User;
use Auth;
use Session;


class HomeController extends Controller
{
/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('auth');
}

/**
 * Show the application dashboard.
 *
 * @return \Illuminate\Http\Response
 */

public function index()
{
    $captain = User::getcaptain();
    $referrals = User::getallreferrals();


    return view('home', ['captain' => $captain, 'referrals' => $referrals]);
}

正如它所说的,getallreferrals方法不是静态的,但是您试图用:,这意味着静态的,来调用它

应该是这样的

在用户模型中为此使用

public function scopeGetallreferrals($query, $user)
{
    return $query->where('referred_by', $user->referral_id);
}
和在控制器中

public function __construct(User $user)
{ 
    $this->middleware('auth');
    $this->user = Auth:user();
}

public function index()
{
    $captain = $this->user->getcaptain();
    $referrals = $this->user->getallreferrals($this->user)->pluck('referral_id');

    return view('home', ['captain' => $captain, 'referrals' => $referrals]);
}

可能是重复的感谢,我认为这是有效的。但随后又出现了一个新的错误。对User.php(第52行)中null上的成员函数where()的FatalThrowableError调用,因为可能有一段时间用户未经授权。需要检查空值公共函数scopeGetcaptain($query){return$this->model->where('reference_id',Auth::user()->referenced_by)->pull('referenced_by');}这是行。返回的值似乎为空。我不想让它显示错误。我该怎么办so@PatrickObafemi看,我更新了答案。检查它现在是否工作。不,不是。还是一样的错误。当用户没有队长时,它显示空错误,但当用户有队长时,它不显示错误。如果用户没有引用,则显示空错误,但他没有。
public function scopeGetallreferrals($query, $user)
{
    return $query->where('referred_by', $user->referral_id);
}
public function __construct(User $user)
{ 
    $this->middleware('auth');
    $this->user = Auth:user();
}

public function index()
{
    $captain = $this->user->getcaptain();
    $referrals = $this->user->getallreferrals($this->user)->pluck('referral_id');

    return view('home', ['captain' => $captain, 'referrals' => $referrals]);
}