Laravel Стол с двумя столбцами - PullRequest
1 голос
/ 10 марта 2020

У меня есть такая база данных

ProductTable

| id | name      |
| 1  | Product 1 |

MachineTable

| id | name      |
| 1  | Machine 1 |
| 2  | Machine 2 |

ParamsTable

| Product_id | Machine_id | Keys   | Value |
|     1      |      1     | Zone 1 |  10   |
|     1      |      2     | Zone 1 |  20   |
|     1      |      2     | Zone 2 |  20   |

Что я хочу на виде вот так, когда я нахожу по product_id на ParamsTable:

| Keys       | Machine 1  | Machine 2   |
| Zone 1     |     10     |     20      |
| Zone 2     |      -     |     20      |

Это мой контроллер

public function show(Product $product){
  $data = ParameterSetting::with('product', 'machine')->where('product_id', $product->id)->get();

  return view('production.parameter.view', [
    'machines' => $data->unique('machine.name')->pluck('machine.name'),
    'params' => $data->unique('keys')->pluck('keys'),
    'data' => $data,
  ]);
}

Но я не знаю, как лучше всего это сделать. Какой тип связи должен быть красноречивым и как его использовать. Впереди спасибо.

1 Ответ

0 голосов
/ 10 марта 2020

Я не думаю, что вы ищете отношения. вам просто нужно переставить данные в нужной форме и передать их в ваше представление. Вот пример:

// rearrange data into $result array
$result = [];
foreach($data as $param){
  $result[$param->keys][$param->machine->name] = $param->value;
}

// pass the new array into the view
return view('production.parameter.view', [
    'machines' => $data->unique('machine.name')->pluck('machine.name'),
    'params' => $data->unique('keys')->pluck('keys'),
    'data' => $data,
    'result' => result
  ]);

, который создаст этот массив

// $result content
[
  'Zone 1' => [
    'Machine 1' => 10,
    'Machine 2' => 20,
  ],
  'Zone 2' => [
    'Machine 2' => 20
  ]
]

, поэтому, по вашему мнению, вы можете l oop просмотреть его, чтобы заполнить таблицу

@foreach($result as $keys => $values)
  <tr>
    <td> {{ $keys }} </td>
    @foreach($machines as $machineName)
      <td> {{$values[$machineName] ?? '-' }} </td>
    @endforeach
  </tr>
@endforeach

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...