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

SQLSTATE[42S22]:找不到列: 1054未知列'products.wishlist_id'in'where cluse'

郜谦
2023-03-14

SQLSTATE[42S22]:找不到列: 1054未知列'products.wishlist_id'in'where子句'(SQL:选择*from产品where产品.wishlist_id=1 and产品>.wishlist_id不是null和产品.deleted_at是null)

In my controller >>>

public function index() {
    $wishlist_items = Wishlist::where('user_id', Auth::user()->id)->get();
    foreach($wishlist_items as $item) {
        dd($item->getProducts()->get());
    }
}

Wishlist.php >>>

public function getProducts() {
    return $this->hasMany(Product::class);
}

Product.php >>>

public function getWishlist() {
    return $this->belongsTo(Wishlist::class);
}

Migration table >>>

Schema::create('wishlists', function (Blueprint $table) {
    $table->id();
    $table->unsignedBigInteger('product_id');
    $table->unsignedBigInteger('user_id');
    $table->timestamps();

    $table->foreign('product_id')->references('id')->on('products');
    $table->foreign('user_id')->references('id')->on('users');
});

共有1个答案

魏风华
2023-03-14

hasMany()函数查询表中的{model\u name}\u id列,在本例中为wishlist\u id。您的products表缺少wishlist\u id列和相关外键。我建议看一下关于一对多关系的Laravel文档。

您的迁移需要包括对现有产品表的更新,以添加列和外键:

Schema::table('products', function (Blueprint $table) {
    $table->unsignedBigInteger('wishlist_id');
    $table->foreign('wishlist_id')->references('id')->on('wishlists');
});

也就是说,你确定你在寻找一对多的关系吗?一个愿望列表可以有多个产品,一个产品可以在多个愿望列表中-多对多关系可能是更好的选择。

 类似资料:
  • 我正在尝试使用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‘,)) 表用户 表成员 迁移用户 移民会员 模型使用者 模范会员 成

  • 我使用的框架Laravel。 我有两个表(用户和成员)。当我想登录时,我会收到错误消息: SQLSTATE[42S22]:找不到列: 1054未知的列'user_email'in'where子句'(SQL:选择*fromwhere=?限制1)(绑定:数组(0= 表用户 表成员 迁移用户 移民成员 模型用户 模范会员 成员模型使用:使用照明\Auth\UserInterface; 控制器 auth.

  • 我是编程界的新手,我自己在学习laravel,我发现了这个错误:SQLSTATE[42S22]:Column not found:1054未知列'clientes.clientes\u id'在'where子句中(SQL:select*fromwhere=1和不为空)(视图:/shared/httpd/laravel_8_crud/resources/views/pedidos/index.bla

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

  • 我的代码:数据库中的值未更新,出现以下错误: (照明\数据库\查询异常(42S22)SQLSTATE[42S22]:找不到列: 1054未知列'用户名'在'where子句'(SQL:选择计数()作为聚合从其中=anikatabassum))和("SQLSTATE[42S22]:找不到列: 1054未知列'用户名'在'where子句'(SQL:选择计数()作为聚合从其中=anikatabassum)