Merhaba, aşağıdaki gibi bir sorgun var,
Servis::with('fiyat')
->with('kampanyafiyat')
->get();
[
{
"id":1,
"hizmet":"tasima",
"created_at":null,
"updated_at":null,
"fiyat":[
{
"id":1,
"servis_id":1,
"tip":"saatlik",
"yillik":"8.35",
"created_at":null,
"updated_at":null
},
{
"id":3,
"servis_id":1,
"tip":"gunluk",
"yillik":"8.35",
"created_at":null,
"updated_at":null
},
{
"id":5,
"servis_id":1,
"tip":"haftalik",
"yillik":"8.35",
"created_at":null,
"updated_at":null
}
],
"kampanyafiyat":[
{
"id":1,
"servis_id":1,
"tip":"saatlik",
"yillik":"8.35",
"created_at":null,
"updated_at":null
},
{
"id":3,
"servis_id":1,
"tip":"gunluk",
"yillik":"8.35",
"created_at":null,
"updated_at":null
},
{
"id":5,
"servis_id":1,
"tip":"haftalik",
"yillik":"8.35",
"created_at":null,
"updated_at":null
}
]
}
]
Yukarıdaki gibi gelen sonucu nasıl aşağıdakine çevirebilirim foreach ile çevirmekten daha kolay bir yöntem var mı laravelde?
[
{
"id":1,
"hizmet":"tasima",
"created_at":null,
"updated_at":null,
"fiyat":{
"saatlik":{
"id":1,
"servis_id":1,
"tip":"saatlik",
"yillik":"8.35",
"created_at":null,
"updated_at":null
},
"gunluk":{
"id":3,
"servis_id":1,
"tip":"gunluk",
"yillik":"8.35",
"created_at":null,
"updated_at":null
},
"haftalik":{
"id":5,
"servis_id":1,
"tip":"haftalik",
"yillik":"8.35",
"created_at":null,
"updated_at":null
}
},
"kampanyafiyat":{
"saatlik":{
"id":1,
"servis_id":1,
"tip":"saatlik",
"yillik":"8.35",
"created_at":null,
"updated_at":null
},
"gunluk":{
"id":3,
"servis_id":1,
"tip":"gunluk",
"yillik":"8.35",
"created_at":null,
"updated_at":null
},
"haftalik":{
"id":5,
"servis_id":1,
"tip":"haftalik",
"yillik":"8.35",
"created_at":null,
"updated_at":null
}
}
}
]
Blade template üzerinde aşağıdaki gibi bir görüntü oluşmaması için bunu nasıl yapabilirim? with kısmında nasıl groupBy kullanabilirim?
@foreach($data as $val)
@foreach($val->fiyat as $aval)
@if($aval->tip == "saatlik")
{{$aval->yillik}}
@endif
@endforeach
@endforeach