【问题标题】:Eager Loading is not working laravel 5.3急切加载不起作用laravel 5.3
【发布时间】:2017-04-14 11:59:08
【问题描述】:

我有三个相关的模型。 1.用户模型

public function users_wishlst(){
        return $this->hasMany('App\Users_wishlst');
    }

2.产品型号

public function users_wishlst(){
        return $this->belongsTo('App\Users_wishlst');
    }

3.Users_wishlst 模型

public function user(){
        return $this->belongsTo('App\User');
    }

    public function product(){
        return $this->hasMany('App\Product');
    }

在 users_wishlsts 表中我有 followibg 列

  1. 身份证
  2. user_id
  3. product_id

我想获取用户愿望清单的产品信息。这个我试过了

public function showWishList(){
        $id= Auth::id();
        $WishList = wishlist::with('product')->where(['user_id'=>$id])->get();
        return json_encode($WishList);
    }

但这给了我以下错误

SQLSTATE[42S22]:未找到列:1054 未知列 'where 子句'中的'products.users_wishlst_id'(SQL:select * from products 其中products.users_wishlst_id 在 (1, 2, 3)) 有什么问题

【问题讨论】:

    标签: php mysql laravel-5.3 one-to-many eager-loading


    【解决方案1】:

    在不了解您的数据库结构的情况下,这似乎是您的外键存在问题。 Eloquent 尝试自动猜测密钥。根据错误,您的 products 表似乎不包含 users_wishlst_id 列(也许您将其命名不同?)。尝试查看您的数据库并为 Laravel 提供正确的外键。

    https://laravel.com/docs/5.3/eloquent-relationships#one-to-many

    【讨论】:

    • 是的,您的猜测是正确的。产品表不包含 users_wishlst_id 列。我的关系可能不正确。我想为用户创建一个愿望清单。为此,我创建了一个名为 users_wishlists 的表,其中将保存用户 ID 和产品 ID。你能帮我处理关系或如何使用 eloquent
    • 在这种情况下,这更像是一种多对多关系,其中您的 users_wishlists 表将是用户和产品之间的数据透视表。 laravel.com/docs/5.3/eloquent-relationships#many-to-many.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多