我在laravel中使用软删除功能,当我使用Post::withTrashed()->get()
方法加载所有数据时可以。但是,当我想使用此查询Post::withTrashed()->find($post)->get()
来获取数据的详细信息时,它将带我到404页。请帮忙。
我也尝试过Post::onlyTrashed()->find($post)->get()
,但还是一样。
我通过直接在文件上回显Hello world字符串来检查路由文件,并且可以正常工作。
更新
控制器脚本。
public function fetchDeletedPosts()
{
return Post::onlyTrashed()->paginate(10);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Post $post
* @return \Illuminate\Http\Response
*/
public function edit(Post $post)
{
$posts = Post::withTrashed()->find($post)->first();
return view('post.edit', compact('posts'));
}
web.php脚本
Route::get('posts/deleted', 'PostController@fetchDeletedPosts')->name('posts.removed');
Route::get('posts/deleted/{post}/edit', 'PostController@edit');
Post.php脚本
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use SoftDeletes;
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
protected $fillable = [
'category_id', 'status', 'slug', 'title', 'content-preview', 'content'
];
public function getRouteKeyName() {
return 'slug';
}
public function author() {
return $this->belongsTo(User::class, 'user_id', 'id');
}
public function tags() {
return $this->belongsToMany(Tag::class);
}
}
答案 0 :(得分:0)
Laravel依赖项注入容器将已经为您获取数据。但是您有一个已删除的帖子。这就是为什么您得到404的原因。 因此,将您的路线更改为:
Route::get('posts/deleted/{id}/edit', 'PostController@edit');
您的控制器要
public function edit($id)
{
$posts = Post::withTrashed()->find($id);
return view('post.edit', compact('posts'));
}