具有雄辩关系的数据表的Foreach循环遍历数组

时间:2018-08-20 15:22:18

标签: php laravel foreach datatables eloquent

我的数据库中有2个表-BotsResults。机器人表仅包含有关每个特定机器人的信息。每个漫游器都应附有多个结果。我将简化我在专栏中的内容:

机器人表

Device | Info1 | Info2  | Info3

结果表

Device | Data1 | Data2 | Data3

如您所见,每个表都有名为Device的列。现在,我当然为每个表提供2个模型-有关信息如下:

Bot模型

public function results()
{
  return $this->hasMany('App\Result', 'device', 'device');
}

结果模型

public function bots()
{
  return $this->belongsTo('App\Bot', 'device', 'device');
}

我有一个带有数据表的视图,该视图试图列出每个Device和对应于该Result的每个Device。我这里的例子说明了引入雄辩的关系之前所做的事情。我过去只拥有结果表,因此,进行遍历和遍历我必须在Datatabes上显示的每个结果非常简单。 / p>

数据表视图

@foreach ($results as $result)
<tr>
  <td>
    {{ $result->device }}
  </td>
  <td>
    {{ $result->info1 }} 
  </td>
  <td>
    {{ $result->info2 }}
  </td>
  <td>
    {{ $result->info3 }}
  </td>
  <td>
    {{ $result->data1 }} 
  </td>
  <td>
    {{ $result->data2 }}
  </td>
  <td>
    {{ $result->data3 }}
  </td>
</tr>
@endforeach

既然设备名称和信息实际上存储在单独的表中,如何使它起作用?

1 个答案:

答案 0 :(得分:0)

您可以使用eager这样的负载来获取设备信息及其关联的results

$bots = Bot::with('results')->get();

现在看来,您可以这样

@foreach ($bots as $bot)
    <tr>
        <td>
            {{ $bot->device }}
        </td>
        <td>
            {{ $bot->info1 }} 
        </td>
        <td>
            {{ $bot->info2 }}
        </td>
        <td>
            {{ $bot->info3 }}
        </td>
    </tr>
    @foreach ($bot->results as $result)
        <tr>
          <td>
            {{ $result->data1 }} 
          </td>
          <td>
            {{ $result->data2 }}
          </td>
          <td colspan="2">
            {{ $result->data3 }}
          </td>
        </tr>
    @endforeach
@endforeach