【问题标题】:Join query with foreach in Laravel在 Laravel 中使用 foreach 加入查询
【发布时间】:2018-10-25 07:16:24
【问题描述】:

我正在尝试学习 Laravel,所以如果我的问题很简单,我深表歉意。
我有 2 个表(table1,table2),如下所示:
表 1:

ID       date       time
1          1          1
2          4          2
3          5          3

表2:

ID       V        R
1        123       T
1        12        F
1        43        F
2        32        T
2        23        T
3        43        F

因为我有 3 种类型的 ID(可能或多或少)我想使用 table1 将 table2 分成 3 个表。像这样:
table2_1:用于 ID:1

V       R
123     T
12      F
43      F

table2_2:用于 ID:2

V       R
23       T
23       T

table2_3:用于 ID:3

V       R
43       F

我想我需要这样的东西:

@foreach ($table1 as $t)
      <table class="table">
         {!! $t -> ID!!}
        <thead>
        <tr>

            <th scope="col">R</th>
            <th scope="col">V</th>

        </tr>
        </thead>
        <tbody>

            <!---Query result ---->

        </tbody>

 @endforeach

在查询结果中,我需要从连接 table1 和 table2 中选择 V 和 R。
但我不知道确切的代码。
任何想法我该怎么做?提前致谢。

【问题讨论】:

    标签: mysql laravel


    【解决方案1】:

    您甚至可能不需要在这里参与table1。只需使用 ORDER BY 子句查询 table2,然后迭代结果集,为每个新的 ID 值生成新的 HTML 表:

    $result = DB::table('table2')
                ->orderBy('ID')
                ->get();
    
    $prev_id = NULL;
    
    foreach($result as $row) {
        $curr_id = $row->ID;
        if ($prev_id != NULL && $curr_id != $prev_id) {
            echo "</table>";
        }
        if ($prev_id == NULL || $curr_id != $prev_id) {
            $prev_id = $curr_id;
            echo "<table class=\"table\" colspan=\"2\">";
            echo "<tr><th scope=\"col\">V</th><th scope=\"col\">R</th></tr>";
        }
        echo "<tr><td>" . $row->V . "</td><td>" . $row->R . "</td></tr>";
    }
    echo "</table>";
    

    【讨论】:

    • 感谢您的回答,它有效,但它显示每一行的 V 和 R,并且不显示每个表的 ID。无论如何,我想我找到了另一种不使用 Query 的方法,但是比较这两件事我有一点问题。 "@if(({!! $s['ID_port'] !!})==({!! $t -> ID_port!!}))" 你知道我该如何比较它们吗?其中一个是 get() 的结果,其中一个来自表。
    • @afsane 请尝试我更新的代码。我遗漏了一些东西。意识到我不能在这里轻松地进行任何测试。
    • 它完全有效,但它在 controller.php 中(对吗?)因此,它看起来不像我的其他表(它们在 show.blade.php 中)。知道如何将它传递给我的 HTML 代码并从那里显示吗?
    • 我对 Blade 的了解为零,AFAIK 是一部出色的 90 年代 Wesley Snipes 吸血鬼电影的名称。看看你是否可以调整我的 PHP 代码。我确实有一个状态变量($prev_id),所以如果你能合并它,其余的应该就可以了。
    • 好的,我试试。再次感谢您。
    猜你喜欢
    • 2016-07-18
    • 2015-06-24
    • 2015-07-14
    • 1970-01-01
    • 2018-04-02
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多