Laravel - SQLSTATE [42S22]:找不到列:1054 未知列

所以我的 laravel 项目中显示了这个错误。我在我的数据库中创建了blogs列categories。我的迁移:类别:


Schema::create('categories', function (Blueprint $table) {

            $table->bigIncrements('id');

            $table->string('title');

            $table->timestamps();

});

博客:


Schema::create('blogs', function (Blueprint $table) {

            $table->bigIncrements('id');

            $table->string('title', 100);

            $table->string('description', 900);

            $table->string('image');

            $table->bigInteger('category_id')->unsigned();

            $table->foreign('category_id')->references('id')->on('categories');

            $table->timestamps();

});

这些是模型之间的关系:我的Blog模型:


public function category(){

        return $this->hasOne('App\Models\Category');

}

我的Category模型:


public function blogs(){

        return $this->belongsTo('App\Models\Blog', 'category_id');

}

当我创建一个新的博客文章时,它向我显示了这个错误:


SQLSTATE[42S22]: Column not found: 1054 Unknown column 'categories.blog_id' in 'where clause' (SQL: select * from `categories` where `categories`.`blog_id` = 16 and `categories`.`blog_id` is not null limit 1)

但我的博客文章正确存储在数据库中category_id。我做错了什么?


哆啦的时光机
浏览 241回答 2
2回答

郎朗坤

我认为你的关系不正确,因为一个类别可以有很多博客分类型号:public function blogs(){         return $this->hasMany('App\Models\Blog'); }和博客属于一类博客模型:public function category(){        return $this->belongsTo('App\Models\Category', 'category_id'); }

森林海

您需要在表blog_id中添加一列categories。对于一个hasOne关系,它是belongsTo携带它所属表的id的模型。您的代码应如下所示:类别Schema::create('categories', function (Blueprint $table) {            $table->bigIncrements('id');            $table->bigInteger('blog_id')->unsigned();            $table->string('title');            $table->timestamps();            $table->foreign('blog_id')->references('id')->on('blogs');});博客Schema::create('blogs', function (Blueprint $table) {            $table->bigIncrements('id');            $table->string('title', 100);            $table->string('description', 900);            $table->string('image');            $table->timestamps();});博客模式public function category(){        return $this->hasOne('App\Models\Category');}品类模型public function blogs(){        return $this->belongsTo('App\Models\Blog');}
打开App,查看更多内容
随时随地看视频慕课网APP