在Laravel 7的查询生成器中使用soft delete onlyTrashed方法时出错

在Laravel 7的查询生成器中使用soft delete onlyTrashed方法时出错,laravel,soft-delete,Laravel,Soft Delete,我想在Laravel的查询生成器中开始使用软删除模型 顺便说一下,我在创建了列deleted_at,并在模型中实现了软删除模型 Request.php: namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request as Req; use Illuminate\Database\Eloquent\SoftDeletes; class Request extends Model {

我想在Laravel的查询生成器中开始使用软删除模型

顺便说一下,我在创建了列deleted_at,并在模型中实现了软删除模型

Request.php:

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request as Req;
use Illuminate\Database\Eloquent\SoftDeletes;

class Request extends Model
{
    use SoftDeletes;
}
请求控制器功能:

public function already_deleted_checker($id_req)
    {
        $request_customer_match_rip = DB::table('requests')->onlyTrashed()->select('id')->where('id', '=', $id_req)->get();

        $request_customer_match_rip_len = count($request_customer_match_rip);

        if ($request_customer_match_rip_len > 0) {
            return true;
        } 
    }
函数“已删除”检查器应检查“已删除”列中的值是否为空。。。但不幸的是,当我运行该函数时,我在浏览器中看到了以下错误:

Call to undefined method Illuminate\Database\Query\Builder::onlyTrashed()

是否有帮助?

当使用软删除时,您应该使用Model QueryBuilder,而不是通用的,实际上通常您应该有99%的时间使用Model QueryBuilder


当使用软删除时,您应该使用模型QueryBuilder,而不是通用的,实际上,您应该99%的时间使用模型QueryBuilder


为什么要使用DB而不是雄辩的模型

简单地说:

 App\Request::onlyTrashed()->select('id')->where('id', '=', $id_req)->get();

DB facade不知道唯一的分层方法。

为什么要使用DB而不是雄辩的模型

简单地说:

 App\Request::onlyTrashed()->select('id')->where('id', '=', $id_req)->get();

DB facade不知道唯一的刷新方法。

只是一个提示。。。避免使用诸如:Model、Request、Controller之类的类名,因为它们已经存在,有时只会带来麻烦!只是一个提示。。。避免使用诸如:Model、Request、Controller之类的类名,因为它们已经存在,有时只会带来麻烦!对于您的代码,它可以工作,但是当我删除一行时,deleted_at列中的值仍然为null。。。这正常吗?我知道该值应该成为当前时间戳。您还应该将其作为模型删除,Request::find$id->delete;,看一下您的初始代码,我假设您会在代码中使用DB::facade,它可以工作,但是当我删除一行时,deleted_at列中的值仍然为null。。。这正常吗?我知道该值应该成为当前时间戳。您还应该将其作为模型删除,Request::find$id->delete;,查看您的初始代码,我假设您也会使用DB::facade