Php 不应静态调用非静态方法App\User::getallreferrals()
我试图在控制器中调用模型内的函数,但出现此错误 (1/1)不应静态调用ErrorException非静态方法App\User::getallreferrals()。在HomeController.php中(第37行) 这是我的模型 } 然后是我的控制器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
<?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]);
}