Ошибка Laravel: метод Illuminate \ Database \ Query \ Builder :: show не существует - PullRequest
0 голосов
/ 07 июля 2019

При вызове функции Controller в блейде / представлении Laravel 5.6 я получаю следующее сообщение об ошибке:

Метод Illuminate \ Database \ Query \ Builder :: show не существует

Я не могу найти, где находится ошибка или источник этой ошибки.Я прочитал десятки постов здесь с той же ошибкой, но ни один из них не был связан с кодом / контекстом / типом моделей / контроллеров (...), которые у меня есть.

Вид блейда, где отображается сообщение об ошибке.

Блейд

@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');
    }
}

Тестирование со всеми () вместо show (), и это работает.

1 Ответ

1 голос
/ 07 июля 2019

В Клинок Вы называете модель.И метод, который вам нужен, находится в контроллере PortfolioController

PortfolioController

public static function show()

Blade

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