查询生成器中不存在 Get onlyTrashed()

6 soft-delete laravel laravel-5.6

我正在尝试从表消息中获取废弃的行:

public function trash() {
    return $this->onlyTrashed()
        ->where('user_id', '=', $this->_u)
        ->orWhere('receiver', '=', $this->_u)
        ->orderBy('deleted_at', 'desc')->get();
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Method Illuminate\Database\Query\Builder::onlyTrashed does not exist.
Run Code Online (Sandbox Code Playgroud)

我检查了 Builder 和 SoftDeletes 文件中是否有 onlyTrashed 方法,但它不存在,如何从消息表中查找已删除的消息?

我想到的唯一方法是创建一个方法,当delete_at不为空时,不返回消息,而trashed只返回那些不为空的消息。但我仍然想知道为什么这不起作用,因为它在以下网址的文档中:

https://laravel.com/docs/5.6/eloquent#soft-deleting

更多信息

是的,它在模型内部,是的,我添加了使用 SoftDeletes:

use Illuminate\Database\Eloquent\SoftDeletes;- 在上面

use SoftDeletes;开课后

让我将整个模型粘贴到此处:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\DB;

class Messages extends Model
{

use SoftDeletes;

protected $fillable = [
    'user_id', 'subject', 'text', 'receiver'
];

public $_u;

protected $dates = ['deleted_at'];

public function __construct() {
    $this->_u = auth()->user()->user_id; //or some id as string
}

public function trash() {
        return $this->onlyTrashed()
        ->where('user_id', '=', $this->_u)
        ->orWhere('receiver', '=', $this->_u)
        ->orderBy('deleted_at', 'desc')->get();
}

public static function trashed() {
        return self::onlyTrashed();
}
}
Run Code Online (Sandbox Code Playgroud)

控制器有:

public function __construct() {
        $this->middleware('auth');
    }

public function index($field = 'trash') {
    if ($field !== "new") {
        $messages = (new Msg)->$field();
        $user = auth()->user();
        return view('pages.messages', compact('messages', 'user'));
    }
    return view('pages.messages.new', compact('messages', 'user'));
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过调用 static,并且尝试从Tinker中进行调用,但仍然不断收到:

onlyTrashed() 不存在

Jon*_*eir 4

您必须调用父构造函数:

public function __construct() {
    parent::__construct();

    $this->_u = auth()->user()->user_id;
}
Run Code Online (Sandbox Code Playgroud)