laravel-mongodb中怎么join关联表,使用了之后没用?没获取到关联表的字段

jenssegers/laravel-mongodb 中怎么 join 关联表查询,使用了之后没用 没获取到关联表的字段数据

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 5

ChatGPT:

在 Laravel-MongoDB 中,MongoDB 并不支持传统的 SQL JOIN 操作。相反,你需要使用 Laravel-MongoDB 的查询构建器和 Eloquent ORM 来执行 MongoDB 的关联操作。

首先,确保你已经在 Laravel 项目中安装了 Laravel-MongoDB 扩展包,然后创建两个模型,其中一个模型代表需要关联的集合,另一个模型代表关联的集合。

接下来,你需要在模型中定义关联关系,可以使用 belongsTo、hasMany 等方法来定义关联关系。例如,如果你有一个 Orders 集合和一个 Customers 集合,你可以在 Orders 模型中使用 belongsTo 方法来定义关联关系,如下所示:

class Order extends Jenssegers\Mongodb\Eloquent\Model {
    public function customer() {
        return $this->belongsTo('App\Customer');
    }
}

然后,在查询时,你可以使用 with 方法来获取关联的数据,例如:

$orders = Order::with('customer')->get();

这将返回一个 Order 集合,每个订单都包含一个 customer 属性,它将是一个 Customer 对象,其中包含与该订单关联的客户数据。

如果你想进一步筛选关联的数据,你可以使用 whereHas 方法来过滤结果。例如,如果你只想获取具有特定客户 ID 的订单,可以这样做:

$orders = Order::whereHas('customer', function($query) use ($customerId) {
    $query->where('_id', $customerId);
})->get();

在这个例子中,我们使用 whereHas 方法来筛选具有特定客户 ID 的订单。

如果你遇到了没有获取到关联表字段的问题,你可以使用 dd 函数打印查询结果,以确保关联关系正确定义和查询构建正确。

2年前 评论
test2018

厉害了

2年前 评论

不确定楼上 AI 的方案行不行, 直觉上感觉非关系数据库弄关联怕是不太行... :flushed:

2年前 评论