because.... spaghetti
Jun 14, 2018
9
Level 1
[SOLVED] Data is duplicated in the view ...
I created 3 tables :
- valuechains,
- segments,
- keyneeds.
A valuechain has many segments and segments has many keyneeds... For this I created the eloquent relationships in the concerned models.
I also created a method which displays informations :
public function getEntitiesWithKeyneeds()
{
$valuechains = Valuechain::orderBy('valuechains.id')
->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
->where('langs.isMainlanguage', '=', '1')
->with('segments')
->with('keyneeds')
->withCount('segments')
->withCount('keyneeds')
->get();
foreach ($valuechains as $valuechain) {
$ids[] = $valuechain->id;
}
$valuechainsCount = count($valuechains);
foreach ($ids as $id) {
$vcskns[] = Segment::select(
'lang_valuechain.vcname', 'lang_valuechain.vcshortname',
'lang_segment.segname', 'lang_segment.segshortname', 'segments.id',
'lang_segment.created_at', 'lang_segment.updated_at', 'lang_segment.deleted_at'
)
->distinct()
->withCount('keyneeds')
->join('lang_segment', 'segments.id', '=', 'lang_segment.segment_id')
->join('valuechains', 'segments.valuechain_id', '=', 'valuechains.id')
->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
->join('sectors', 'valuechains.sector_id', '=', 'sectors.id')
->join('lang_sector', 'sectors.id', '=', 'lang_sector.sector_id')
->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
->where([
['langs.isMainlanguage', '=', '1'],
['valuechains.id', '=', $id]
])
->whereNull('valuechains.deleted_at')
->whereNull('sectors.deleted_at')
->whereNull('segments.deleted_at')
->get();
}
return view('admin.tests', compact('vcskns', 'segmentsCount', 'valuechainsCount'));
}
In my view i want to display foreach valuechains the corresponding segments with the count of keyneeds...
In my view I have :
@for ($i=0; $i<$valuechainsCount; $i++)
@foreach($vcskns[$i] as $vcskn[$i])
{{ $vcskn[$i]->vcname }}<br>
@endforeach
@foreach($vcskns[$i] as $vcskn[$i])
{{ $vcskn[$i]->segname }} - {{ $vcskn[$i]->keyneeds_count }}<br>
@endforeach
@endfor
As a result I obtain this :
VC1
VC1
SEGMENT1 - 0
SEGMENT2 - 0
VC2
SEGMENT3 - 0
I just wonder why VC1 appears twice... Thanks
Level 13
Quick and dirty fix:
@for ($i=0; $i<$valuechainsCount; $i++)
{{ $vcskn[$i]->first()->vcname ?? "Empty Set"}}<br>
@foreach($vcskns[$i] as $vcskn[$i])
{{ $vcskn[$i]->segname }} - {{ $vcskn[$i]->keyneeds_count }}<br>
@endforeach
@endfor
1 like
Please or to participate in this conversation.