实际上,我在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
答案 0 :(得分:0)
看起来您只需要创建一个关系多对多 https://laravel.com/docs/5.8/eloquent-relationships#many-to-many
答案 1 :(得分:0)
试图用英语理解您的问题:
您似乎有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>
这样的想法是,只要一行数据包含新的帐单,就开始在表中显示新行,否则,您只需继续将单元格添加到当前行即可。