为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
哆啦的时光机 2023-05-26 16:00:07
所以我的 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。我做错了什么?
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

我认为你的关系不正确,因为一个类别可以有很多博客

分类型号:

public function blogs(){
        return $this->hasMany('App\Models\Blog');
}

和博客属于一类

博客模型:

public function category(){
       return $this->belongsTo('App\Models\Category', 'category_id');
}


查看完整回答
反对 回复 2023-05-26
?
森林海

TA贡献2011条经验 获得超2个赞

您需要在表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');

}


查看完整回答
反对 回复 2023-05-26
  • 2 回答
  • 0 关注
  • 225 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信