无法使用Laravel 5.7中的软删除功能删除详细信息

时间:2018-10-19 12:57:36

标签: php laravel-5

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

1 个答案:

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