Php Laravel属于外键不工作

Php Laravel属于外键不工作,php,laravel,eloquent,laravel-5.5,Php,Laravel,Eloquent,Laravel 5.5,我对拉拉维尔比较陌生,我正试图用雄辩的语言建立一个论坛 我使用make:auth命令进行用户迁移,并使用mysql workbench和插件创建了线程迁移,以将ERD转换为迁移: Schema::create($this->set_schema_table, function (Blueprint $table) { $table->engine = 'InnoDB'; $table->increments('id');

我对拉拉维尔比较陌生,我正试图用雄辩的语言建立一个论坛

我使用make:auth命令进行用户迁移,并使用mysql workbench和插件创建了线程迁移,以将ERD转换为迁移:

    Schema::create($this->set_schema_table, function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->increments('id');
        $table->string('title', 45)->nullable();
        $table->text('description')->nullable();
        $table->timestamp('created_at')->nullable()->default(DB::raw('CURRENT_TIMESTAMP'));
        $table->timestamp('updated_at')->nullable()->default(DB::raw('CURRENT_TIMESTAMP'));
        $table->unsignedInteger('created_by');

        $table->index(["created_by"], 'fk_threads_users1_idx');


        $table->foreign('created_by', 'fk_threads_users1_idx')
            ->references('id')->on('users')
            ->onDelete('no action')
            ->onUpdate('no action');
    });
之后,我为线程创建了一个模型,并扩展了用户模型以指定两者之间的关系:

class Thread extends Model
{
    // No fields are protected in the database
    protected $guarded = [];

    public function user(){
        return $this->belongsTo(User::class, 'created_by');
    }
}

起初,这工作正常,但在运行
php artisan cache:clear
(或者可能是其他原因导致代码停止工作,我不确定)之后,线程控制器中的store方法给了我一个错误:

Column not found: 1054 Unknown column 'user_id' in 'field list' 
(SQL: insert into `threads` (`title`, `content`, `user_id`, `updated_at`, `created_at`) 
values (Thread 4, content, 17, 2017-11-23 11:16:24, 2017-11-23 11:16:24))`
正如您所看到的,它试图查找字段“user\u id”,而我在Thread类的user方法中指定了外键应该是“created\u by”

我敢肯定一开始一切都很顺利。
有人知道如何修复此问题吗?

您应该修复
有许多方法,如下所示:

return $this->hasMany('App\Comment', 'foreign_key');
参考:

将代码更改为:

public function threads(){
    return $this->hasMany(Thread::class, 'created_by');
}

没问题!很高兴看到它对你有帮助!
public function threads(){
    return $this->hasMany(Thread::class, 'created_by');
}