请教laravel 8软删除问题,当在数据库中添加deleted_at列后,withTrashed()会变成未定义

当在Laravel 8框架下,使用SoftDeleted的时候,默认在Query中 添加 where deleted_at is null。
在使用migration在对应的table里添加了deleted_at列:

class AddDeletedAtToLogEntriesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('log_entries', function (Blueprint $table) {
            $table->softDeletes();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('log_entries', function (Blueprint $table) {
            //$table->dropColumn('deleted_at');
            $table->dropsoftDeletes();
        });
    }
}

原本测试网页显示的报错信息:

Column not found: 1054 Unknown column ‘log_entries.deleted_at’ in ‘where clause’

会变成:

Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::withTrashed()

但在Model中已经明确call了SoftDelelted trait:

use Illuminate\Database\Eloquent\SoftDeletes;

class LogEntry extends Model
{
    use SoftDeletes;

    public function user() {
        return $this->belongsTo('App\Models\User')->withTrashed();
    }
    .
    .
    .
}

希望有大神能够提供指点,谢谢。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
Epona
最佳答案

没记错的话,需要在User里面引用 SoftDeletes 你这里引入只能在 log_entries 内使用, belongsTo的要在belongsTo里引入软删除

3年前 评论
讨论数量: 2
Epona

没记错的话,需要在User里面引用 SoftDeletes 你这里引入只能在 log_entries 内使用, belongsTo的要在belongsTo里引入软删除

3年前 评论

@Epona 谢谢大神,在User的Model里面引入了SoftDeletes后就可以顺利运行了。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!