Php 使用foreach迭代模型会产生奇怪的结果-Lumen/Laravel

Php 使用foreach迭代模型会产生奇怪的结果-Lumen/Laravel,php,laravel,eloquent,orm,lumen,Php,Laravel,Eloquent,Orm,Lumen,我想迭代具有以下结构的模型: { "id_coretable": 1, "Internal_key": "UPDATED1", "extensiontable_itc": { "description_itc": "UPDATED1" }, "extensiontable_sysops": { "description_sysops": "UPDATED1" } } 检索时使用以下代码: $join = coretable::with($permitte

我想迭代具有以下结构的模型:

{
  "id_coretable": 1,
  "Internal_key": "UPDATED1",
  "extensiontable_itc": {
    "description_itc": "UPDATED1"
  },
  "extensiontable_sysops": {
    "description_sysops": "UPDATED1"
  }
}
检索时使用以下代码:

$join = coretable::with($permittedTables)->find(1);
其中,
$permittedTables
是一个表名数组

现在,当我这样做时:

foreach($join as $el){
  log::info($el);
}
我得到以下结果:

[2020-02-06 11:32:36] local.INFO: 1  
[2020-02-06 11:32:36] local.INFO: 1  
[2020-02-06 11:32:36] local.INFO:   
[2020-02-06 11:32:36] local.INFO: 1  
为什么呢?根据Laravel文档,迭代一个集合肯定会起作用:

$users = App\User::where('active', 1)->get();

foreach ($users as $user) {
    echo $user->name;
}

现在,我这里肯定有一个模型,不是收藏品。我用
if(…instanceof model)
检查了它。 但是,当我使用
->findMany(1)
而不是
->find(1)
强制检索集合时,情况并没有真正好转。 在foreach循环上使用集合只会导致foreach循环输出完整结构一次,然后离开循环。如果我现在在嵌套的foreach循环中使用这个对象,那么我会得到与上面相同的结果

这是拉威尔的正常行为吗? 如果是这样的话,有没有任何方法可以迭代一个模型,特别是像这里这样的“2D模型”

底线: 我最终想要实现的是能够“动态”地将新值分配给模型的任何元素,然后将其持久化到数据库中。 如果出于这个目的,我应该用新的数组覆盖模型中嵌套的“数组”,那么就这样吧,告诉我怎么做 应该更新模型的输入将具有与模型完全相同的结构和索引。 你也可以在我的另一个问题中了解这一点:


我目前正试图一点一点地解决这个问题,因为上面这个问题还没有得到任何答案。我想到的第一件事是尝试迭代模型并逐个元素更新它。但正如您所看到的,我在这方面也遇到了问题。^^

您想迭代一个模型,或者通过()传递给它的关系吗?如果是第一个,那么您需要重新阅读关于find方法的文档,该方法在您提供的链接中只有一个参数。在参数中传递1意味着它将返回一个主键为1的单一模型实例。@DanielProtopov好吧,我想迭代您在我的OP中看到的完整模型。这是从coretable获取的结果,extensiontables通过FK引用该coretable,并使用coretable::with($arrayOfTablenames)与这些表连接. 除了ID为“1”的coretable中的记录之外,引用该记录的extensiontables中的记录也存在于该模型中。我想通过在这个模型上迭代来更新它们。