Laravel error: Method Illuminate\Database\Query\Builder::show does not exist

Laravel error: Method Illuminate\Database\Query\Builder::show does not exist

在 Laravel 5.6 blade/view 中调用控制器函数时,我收到以下错误消息。

Method Illuminate\Database\Query\Builder::show does not exist

我找不到错误的位置或错误的来源。我在这里阅读了数十篇具有相同错误的帖子,但其中 none 与我拥有的 models/controllers(...) 的 code/context/type 有关。

Blade 查看显示错误消息的位置。

Blade

@foreach (\App\Portfolio::show() as $port)
    <option value="{{$port->id_portfolio}}">{{$port->name}}</option>
@endforeach

控制器

class PortfolioController extends Controller
{
    public function show()
    {
        $portfolio = \App\Portfolio::where([
            ['flg_active', '=', true],
            ['id_user', '=', Auth::user()->id]
        ])->get();

        return $portfolio;
    }
}

型号

class Portfolio extends Model
{
    public function transaction()
    {
        return $this->hasMany('App\Transaction', 'id_portfolio', 'id_portfolio');
    }

    public function user()
    {
        return $this->belongsTo('App\User', 'id_user', 'id');
    }
}

使用 all() 而不是 show() 进行测试,它有效。

Blade中调用模型。 您需要的方法在控制器 PortfolioController

投资组合控制器

public static function show()

Blade

@foreach (\App\PortfolioController ::show() as $port)
   <option value="{{$port->id_portfolio}}">{{$port->name}}</option>
@endforeach