请教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();
    }
    .
    .
    .
}

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
Epona
最佳答案

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

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

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

2年前 评论

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

2年前 评论

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