【问题标题】:Laravel error: Method Illuminate\Database\Query\Builder::show does not existLaravel 错误:方法 Illuminate\Database\Query\Builder::show 不存在
【发布时间】:2019-11-17 09:37:28
【问题描述】:

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

使用 all() 而不是 show() 进行测试,它可以工作。

【问题讨论】:

    标签: php laravel eloquent laravel-5.6


    【解决方案1】:

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

    投资组合控制器

    public static function show()
    

    刀片

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-24
      • 2019-01-24
      • 2019-10-04
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      相关资源
      最近更新 更多