Отображение родителя и ребенка в одном ряду - PullRequest
0 голосов
/ 17 октября 2019

На самом деле у меня есть таблица на веб-сайте Laravel с данными из разных таблиц базы данных. Но таким образом я получаю строку для каждого дочернего и повторяющихся родительских данных.

Вместо этого я хотел бы иметь одну строку для родительских данных и все дочерние элементы в одной строке.

Выглядит какосновная проблема, но на самом деле я потерял зрение.

Есть идеи?

Просмотр:

    $rechnungen=DB::select(DB::raw("
    select
    reintern, krenr, krebez, bnrkenn, bubelegnr, aufnr, sacktonr, sacbez, ustkenn,
    TO_CHAR(round(bupbetr*(1+ustproz/100),2), '99G999D99', 'NLS_NUMERIC_CHARACTERS = '',.') as brutto,
    wiebez, objktext, vektext
    from RECHNUNG re
    join BUCHUNG bu on bu.REKEY=re.REKEY
    ...
    join BUCHUNGPOS bup on bup.BUKEY=bu.BUKEY and nvl(BUPARTKZ,0)=0 and bup.KREKEY is null
   ...
    where re_status=0
    order by bnr.BNRKENN, bu.BUBELEGNR
    "));

Контроллер:

               @foreach ($rechnungen as $re)
                <tr>
                  <td></td>
                  <td>{{$re->wiebez}} {{$re->objktext}} {{$re->ve_ktext}}</td>
                  <td>{{$re->krektonr}}</td>
                  <td>{{$re->krebez}}</td>
                  <td>{{$re->bnrkenn}} {{$re->bubelegnr}}</td>
                  <td>{{$re->aufnr}}</td>
                  <td>{{$re->sacktonr}} {{$re->sacbez}}</td>
                  <td class="text-right">{{$re->ust_kenn}}</td>
                  <td class="text-right">{{$re->brutto}} €</td>
                </tr>
                @endforeach

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

В попытке понять вашу проблему на английском языке:

Похоже, у вас есть 3 таблицы:

Table BILL: Columns REKEY + various data
Table BOOKING: Columns BUKEY + REKEY + various data
Table BOOKINGPOS: Columns BUPKEY + BUKEY + various data 

Где BOOKING.REKEY - ссылка на внешний ключ для BILL.REKEY и BOOKINGPOS.BUKEY является ссылкой внешнего ключа на BOOKING.BUKEY.

Я предполагаю, что каждый BILL может иметь несколько BOOKING, и каждый BOOKING может иметь несколько BOOKINGPOS.

Проблема, с которой вы сталкиваетесь, это отображение /проблема представления, не проблема данных / модели. В псевдокоде вы должны реализовать свое представление следующим образом:

{{ $last_rekey="" }}
@foreach( $rows as $row )
  @if( $row->rekey != $last_rekey )
    @if( $last_rekey != "" )
      </tr>
    @endif
    <tr>
      <td>$row->BILLdata1</td>
      <td>$row->BILLdata2</td>
      ...
    $last_rekey=$row->rekey
  @endif
  <td>$row->BOOKINGdata1</td>
  <td>$row->BOOKINGdata2</td>
  ...
  <td>$row->BOOKINGPOSdata1</td>
  ...
@endforeach
</tr>

Идея состоит в том, что всякий раз, когда строка данных содержит новый BILL, вы начинаете отображать новую строку в таблице, в противном случае вы простопродолжить добавление ячеек к текущей строке.

0 голосов
/ 17 октября 2019

Похоже, вам просто нужно создать отношение Многие ко многим https://laravel.com/docs/5.8/eloquent-relationships#many-to-many

...