Невозможно подробно удалить с помощью функции мягкого удаления в Laravel 5.7. - PullRequest
0 голосов
/ 19 октября 2018

Я использую функцию мягкого удаления в 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 голосов
/ 19 октября 2018

Контейнер внедрения зависимостей 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'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...