mysql - 数据表 - 从不同的 Laravel 查询创建每一列

标签 mysql laravel datatable pivot

我需要什么

我需要能够从 3 个不同的查询中填充数据表。它基本上是来自单个 MySql 表的数据透视表,但我没有为每一行创建一个手动数据透视表以进行分组的共同点。

我的表格基本上是这样的:

id  |  environment_id  |  |  date  
1  |  1  |  Date1  
2  |  1  |  Date2  
3  |  2  |  Date3  
4  |  2  |  Date4  
5  |  3  |  Date5  
6  |  3  |  Date6  

我需要的是将其提取为数据表可以放入以下格式的格式:

environment_id 1  |  environment_id 2 |  environment_id 3  
Date 1  |  Date 3  |  Date 5  
Date 2  |  Date 4  |  Date 6  

我尝试过的

我尝试从 MySql 制作一个手动数据透视表,但由于没有公共(public)列可用于分组,最终每行一次只填充 1 列,在表输出中留下很大的空白。

我目前认为我需要运行 3 个查询,每个 environment_id 1 个,并以某种方式将它们连接到一个数组/集合中,我可以用它来填充数据表。然而,这被证明是困难的,如果可能的话,我无法理解它是如何工作的。

最佳答案

早上好

您确定 groupBy('environment_id')->get() 不能满足您的需求吗?因为您正试图实现数据表的异常行为。每个信息都应该配对或获得一个标识符值。

选项:

答: 执行单个查询并将它们推送到一个数组中。

$envArray = [];
foreach ($environment_ids as $id){
    $envArray.push(Environment::where('environment_id','=',$id)->get());
}

乙: 通过 ERM Eloquent 定义关系并在使用 with('dates') 查询时调用关系,因此称为 Eager Loading .

A或B建表时需要分别为每个environment_id调用数组内部的数组。

<table>
    <thead>
    @foreach ($arrays as $array)
        <th>Environment ID {{$loop->iteration+1}}</th>
    @endofreach
    </thead>
    <tbody>
        @foreach ($theLongestArray as $rowindex)
            <tr>
            @foreach ($arrays as $array)
                <td>if ($array[$rowindex]!=null){{$array[$rowindex]}}</td>
            @endofreach
            </tr>
        @endofreach
    </tbody>
</table>

关于mysql - 数据表 - 从不同的 Laravel 查询创建每一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56259478/

相关文章:

php - 安装 Laravel 后 XAMPP localhost 返回未找到的对象

javascript - DataTables - 如何使用自定义条件对列进行排序?

mysql - 比较搜索中的列别名结果

php - 无法按日期排序

Laravel 单元测试自动依赖注入(inject)不起作用?

api - 如何在 Laravel 中调用端点时模拟注入(inject) Controller 的对象?

javascript - 数据表:是否可以根据下拉列表中的选择动态更改要查看的数据表的列?

datatable - PowerBI:连续数据具有相同的 ID

多次使用 ANY_VALUE 时的 MySQL 行为

mysql - 在子查询中检索当前行和下一行之间的Timediff