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

在Laravel 5.7中使用多个键合并集合

贝礼骞
2023-03-14

因此,我在Laravel5.7中整理来自外部API的数据,需要使用Eloquent(我不制定这些规则)将来自3个方法的数据整理成一行。这些函数当前返回集合,我需要将它们合并到一个集合中,然后放入数据库中。我在所有集合之间有以下共同参数:

[uniqueID, date]

这是因为我将获得多个相同的uniqueID,但具有不同的日期-因此唯一性是一个日期uniqueID的组合。

这里有一个我想要现实实现的伪代码示例:

public function getParamSet1()
{
    // some code gets the params to put into this collection
    // this is a fairly big pull and has a few nested loops to
    // put values into the below collection.
    $aggregateParamSet1 = collect(['param1', 'uniqueID', 'date', ]);
    return aggregateParamSet1;
}

public function getParamSet2()
{
    // some code gets the params to put into this collection
    // this is a fairly big pull and has a few nested loops to
    // put values into the below collection.
    $aggregateParamSet2 = collect(['param2', 'uniqueID', 'date', ]);
    return $aggregateParamSet2;
}

public function getParamSet3()
{
    // some code gets the params to put into this collection
    // this is a fairly big pull and has a few nested loops to
    // put values into the below collection.
    $aggregateParamSet3 = collect(['param3', 'uniqueID', 'date', ]);
    return $aggregateParamSet3;

}

public function writeToDB()
{
    $collection1 = getParamSet1();
    $collection2 = getParamSet2();
    $collection3 = getParamSet3();
    // merge these collections then update/create the records with
    // Eloquent

}

作为一个不太熟悉Laravel的人,我认为我应该在集合中有一个单独的字段,合并日期ID以创建一个真正唯一的ID,并基于该关键字进行合并,如果我正确理解集合文档,但是我认为必须有一种更好、更有效的方法来做到这一点?如果能够通过一些方法来管理3个需要整理成一行的不同数据(使用公共ID和日期)返回的调用,您将不胜感激。

共有1个答案

淳于开畅
2023-03-14

您可以使用Model::updateOrCreate($where$update)eloquent方法将每个参数集的数据写入数据库。将uniqueIddate填充到$where数组中,其余数据填充到$update数组中。这将使模型的所有DB条目在每个日期uniqueID组合中保持唯一。

 类似资料:
  • 问题内容: 我整个上午都在搜索,但是大多数合并示例仅基于一个键,而在多个键上却找不到任何东西。 pid = 111,sid = 6,eid = 123的值在x和y中都匹配,然后合并为一条记录。如果它们不匹配,只需将其原样带过来。 我想要的最终结果: 问题答案: 这是从元组中重新锁定:

  • 我需要合并两个数据帧。为了确保行是唯一的,我需要在合并之前验证“Name”和“Age”是否匹配。我将组合用作主键。这是我的密码: 当我使用多个键(“姓名”和“年龄”)时,这是一个“和”或“或”匹配。我只希望它在“Name”和“Age”匹配时合并,而不是只在“Name”或“Age”匹配时合并。我似乎在文档中找不到这一点,我得到了一些混合的结果。 更新:由于数据原因,我确实需要进行左连接。右边的表是我

  • 问题内容: 我有多个像这样的字典/键值对: 我希望结果成为新的字典(如果可能的话,以最有效的方式): 实际上,我希望结果d为: 如果有人告诉我如何获得第一个结果,那么我可以找出其余的结果。 问题答案: 假设所有键始终存在于所有字典中: 注意:在Python 3.x中,使用以下代码: 并且如果dic包含numpy数组:

  • 问题内容: 我想在mongodb中为每个集合使用多个模式,如何使用它。 当我尝试运行它时,它给了我这个错误: 错误: OverwriteModelError:编译后无法覆盖模型。 OverwriteModelError:编译后无法覆盖模型。 这是我的schema.js 问题答案: 在猫鼬中,您可以执行以下操作: 这两个模式将保存在“用户”集合中。 有关更多信息,您可以参考文档:http : //m

  • 问题内容: 如果要在Java中将两个列表合并为一个,可以使用。但是,如果我想合并多个列表怎么办? 这有效: 但这似乎并不是最好的解决方案,阅读起来也不是特别好。可悲的是不起作用。对于我来说,多次使用并为所有条目重复创建自己的列表似乎也不理想。那我该怎么办呢? 问题答案: 借助下面的代码中所示的Stream API, Java 8可以轻松实现这一目标。我们基本上已经创建了一个包含所有列表的流,然后,

  • 问题内容: 我有一个要合并的文件数组。这是我尝试过的,但是没有用。 问题答案: 使用IOUtils可以做到这一点。看我的例子: 如果您不能使用IOUtils lib,请编写自己的实现。例:

  • 我必须通过 Azure 门户从 azure cosmos DB 中删除一些文档。我在容器中编写了一个存储过程,它将删除必须删除的数据。但是在执行存储过程时,它将要求提供分区键值。我必须删除具有不同分区键的文档。 下面给出了使用的存储过程。 假设我的分区键是车辆类型,并且我的车辆类型值为01到10。根据我的要求,sql查询将返回具有10个不同分区键值的文档。 当前方案就像我必须通过每次提供每个分区键

  • 本文向大家介绍如何合并多个 .NET 程序集,包括了如何合并多个 .NET 程序集的使用技巧和注意事项,需要的朋友参考一下 任何曾今寻找过一个将多个程序合并到一个文件中的解决方案的人,可能都听说过项 ILMerge, SmartAssembly, 等这样的工具. 另外一个知名的方案是将DLL作为资源进行嵌入(如果感兴趣,这里有一篇描述这一方案的精彩文章:从嵌入的资源出载入DLL[^]). 而在某些