当前位置: 首页 > 知识库问答 >
问题:

如何解决SQLSTATE[42S22]:找不到列:“where子句”中的1054未知列“id”

相温文
2023-03-14

我正在数据库雄辩的关系一对一,但写代码后,我得到一个错误:

SQLSTATE[42S22]:未找到列:1054个未知列“posts”。在where子句中删除了“'in'”(SQL:select*from`posts`where`posts`.`user\u id`=1和`posts`.`user\u id`不为空,且`posts`.`deleted\u at`为空限制1

此代码用于我链接用户id的post表

后表迁移

class CreatePostTable extends Migration
{
   
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->string('title');
            $table->text('body');
            $table->timestamps();
        });
    }

  
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

这是我要链接帖子的用户表

用户模型迁移

class CreateUsersTable extends Migration
{
    
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }


    public function down()
    {
        Schema::dropIfExists('users');
    }
}

User.php代码


 
public function post(){
   return $this->hasOne('App\Post'); //select * from post where user_id = 1
    
}

这是路线:

Routes\web.php

 Route::get('user/{id}/post', function ($id) {
     

    return User::find($id)->post;
 });

共有2个答案

上官思博
2023-03-14

您的Post模型可能使用了TraitSoftDeles,这增加了查询子句deleted_at在调用雄辩的方法时为空。

你有2个解决方案:

  1. 使用$table添加到迁移中(创建新迁移)-

慕兴平
2023-03-14

您尚未在posts表中创建deleted\u at列。如果在posts表中的deleted\u at列中创建一个deleted\u,则它将起作用。

 类似资料:
  • 此函数有问题。它应该返回使用下面的sql调用收集的数据的json字符串。问题是,当通过服务器访问页面时(例如-localhost/app/API/states/Alabama/1/10.json),我得到一个错误代码“500”。奇怪的是,数据在使用.json和不使用appending.json的情况下按预期显示。据我所知,控制器和模型设置得很好,但错误代码仍然存在: {“code”:500,“ur

  • 关于,我正在使用主键=idusuarios的同一视图更新一个名为usuarios的表,insert使我完美地解决了问题,因为当我要更新时,它会生成错误 SQLSTATE[42S22]:找不到列: 1054未知列'usuarios.id'in'where子句'(SQL: Select*fromwhere. 这是我的密码 模型 类Usuario扩展模型{ 另一张表的模型 控制器 公理

  • 我正在尝试使用PDO向MySQL插入一条记录,下面的代码中可以看到我的sql语句。 当执行此代码时,我会遇到以下错误消息; SQLState[42S22]:找不到列:1054“Field List”中的未知列“John” 这无疑是解决这个问题的一个简单方法,但我似乎看不出来,有人能给我指明正确的方向吗?

  • 问题内容: 我正在使用Laravel框架。 我有2个表(用户和成员)。当我想登录时,收到错误消息: SQLSTATE [42S22]:找不到列:1054’where子句’中的未知列’user_email’(SQL:select * from where =?limit 1)(绑定:数组(0 =>'test@hotmail.com‘,)) 表用户 表成员 迁移用户 移民会员 模型使用者 模范会员 成

  • 在多供应商网站上工作。当商店/供应商用户想登录时突然得到这个错误没有问题普通用户这里有两种类型用户一种是供应商或商店老板/另一种普通客户当供应商想登录时得到这个错误。但正常用户没有问题面临的登录。添加新列,但问题是继续SQL完整性错误。 这是登录控制器。 登录控制器的详细信息 路线 车间管理控制员 商店管理模式 **店铺模型** 错误

  • 我得到以下错误SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“id”(SQL:选择count(*)作为来自