最新版本的Laravel中是否删除了Controllers中使用的“最新”方法?
在PHP Storm中,出现以下错误:
在App / Thread中找不到方法Latest()。
public function index()
{
//
$threads = Thread::latest()->get();
return view('threads.index', compact('threads'));
}
我正在关注LaraCasts教程,并且浏览至所述页面会出现以下错误。 -> forum.test /线程。
ErrorException(E_ERROR) 方法Illuminate \ Database \ Query \ Builder :: path不存在。 (视图:D:\ xampp \ htdocs \ forum \ resources \ views \ threads \ index.blade.php)
根据要求,我的观点:位于resources / views / threads / index.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Forum Threads</div>
<div class="panel-body">
@foreach ($threads as $thread)
<article>
<h4>
<a href="{{ $thread->path() }}">
{{ $thread->title }}
</a>
</h4>
<div class="body">{{ $thread->body }}</div>
</article>
<hr/>
@endforeach
</div>
</div>
</div>
</div>
</div>
@endsection
另外,我的路线。
<?php
Route::get('/', function () {
return view('welcome');
});
Route::resource('threads', 'ThreadController');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
答案 0 :(得分:2)
该错误与您发布的代码无关。 Method Illuminate\Database\Query\Builder::path does not exist.
。您正在调用某处不存在的path
方法。
要回答您的问题,(当前)最新版本的Laravel 5.6中仍然存在方法latest()
:
https://laravel.com/api/5.6/Illuminate/Database/Query/Builder.html#method_latest
我的猜测是您对Thread
模型关系的配置不正确。您很可能没有定义path()
关系。
请参见以下类似问题的答案:https://stackoverflow.com/a/37934093/1885946