gpt4 book ai didi

mysql - Eloquent 查询,可能的 Join

转载 作者:行者123 更新时间:2023-11-29 18:37:54 24 4
gpt4 key购买 nike

我有三个模型:驱动程序、名称和 dpsObject,具有以下关系:

驱动程序->hasMany(dpsObject)driver->belongsTo(指定)

名称->hasMany(驱动程序)

dpsObject->belongsTo(驱动程序)

我正在尝试编写一个查询来返回与三个用户输入的值相对应的 dpsObject 记录列表,这三个用户输入是:保存 dpsObject 中 EntryDate 字段值的日期范围(从和到)以及Designation 输入,保存 Designation 对象中 Designation_name 字段的值。目前这是我的查询:

$dps = dpsObject::where([['entryDate', '>=', $from],
['entryDate', '<=', $to]]);

$from 和 $ 保存从表单用户提交中获取的请求值。我需要完成查询以捕获具有 dpsObject 记录的驱动程序的名称。挑战在于,designation_name 字段不存在于 dpsObject 模型上,而仅存在于驱动程序和 Designation 模型上。这就是我想要维护数据库模型的方式。我认为我需要使用连接或类似的东西,但我不知道如何去做。

编写此类查询的最佳方法是什么?

亲切的问候

最佳答案

您可以使用嵌套的whereHas():

$dpsObjects = dpsObject::whereBetween('entryDate', [$from, $to])
->whereHas('driver', function ($q) use($designationName) {
$q->whereHas('designation', function ($q) use($designationName) {
$q->where('designation_name', $designationName);
});
})
->get();

这里,designationdriverbelongsTo()关系。

关于mysql - Eloquent 查询,可能的 Join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45128961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com