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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 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函数打印查询结果,以确保关联关系正确定义和查询构建正确。

1年前 评论
test2018

厉害了

1年前 评论

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

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!