Datatables - создает каждый столбец из разных запросов Laravel. - PullRequest
1 голос
/ 22 мая 2019

Что мне нужно

Мне нужно иметь возможность заполнять таблицу данных из 3 разных запросов.По сути, это сводная таблица из одной таблицы MySql, но у меня нет ничего общего для каждой строки, чтобы создать сводную таблицу вручную для Group By.

Моя таблица в основном выглядит следующим образом:

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, но из-за отсутствия общего столбца для Group By, в результате в каждой строке заполнялся только 1 столбец за раз, оставляя большие пробелы в выходных данных таблицы.

В настоящее время я думаю, что мне нужно будет выполнить 3 запроса, по одному для каждого environment_id, и каким-то образом объединить их в один массив / коллекцию, с помощью которого я могу заполнить данные.Однако, это оказывается трудным, и я не могу понять, как это будет работать, если это вообще возможно.

1 Ответ

0 голосов
/ 22 мая 2019

Снова доброе утро.

Вы уверены, что groupBy('environment_id')->get() не удовлетворяет вашим потребностям?Потому что вы пытаетесь добиться необычного поведения для данных.Каждая информация является парной или получает значение идентификатора, как и должно быть.

Параметры:

A: Выполнять отдельные запросы и помещать их в массив.

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

B: Определите отношения с помощью 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>
...