please if anyone can help, i still need it
Nov 3, 2020
16
Level 1
(DONE) How to return Array from Model laravel?
so i have this syntax in my blalde:
@foreach($fr->delivery->deliveryTrack as $fp)
<li class="text-left">
<b>{{ $fp->date }}</b>
<br>
{{ $fp->desc }}
</li>
@endforeach
and this is the output when i dd($track) in my deliveryTrack function which return an array like this:
array:3 [
0 => array:2 [
"date" => "5 Sep 2020 16:27"
"desc" => "Terkirim [CIBINONG - DC_PAKANSARI]"
]
1 => array:2 [
"date" => "5 Sep 2020 15:02"
"desc" => "Sedang Diantar [CIBINONG - ]"
]
2 => array:2 [
"date" => "5 Sep 2020 14:20"
"desc" => "Telah Tiba [CIBINONG - DC_PAKANSARI]"
]
]
when i try to return $track, it shows an error:
App\Models\OrderDelivery::deliveryTrack must return a relationship instance.
here my deliveryTrack syntax:
public function deliveryTrack(){
$receipt_number = [];
$seller = [];
$buyer = [];
$delivery_date = [];
$track = [];
$status = [];
$success = [];
$data = [];
$error = [];
$order = Order::where('id',$this->order_id)->first();
$orderDelivery = OrderDelivery::where('order_id',$order->id)->first();
if(!empty($orderDelivery->waybill)){
$deliveryService = DeliveryService::where('id',$orderDelivery->delivery_service_id)->first();
$restaurant = Restaurant::where('id',$order->restaurant_id)->first();
$user = User::where('id',$order->user_id)->first();
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pro.rajaongkir.com/api/waybill",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "waybill=".$orderDelivery->waybill."&courier=".$deliveryService->key,
CURLOPT_HTTPHEADER => array(
"content-type: application/x-www-form-urlencoded",
"key: d5775da3b766b41dc67281515c116e97"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
$array = json_decode($response, true);
$object = $array['rajaongkir']['result'];
$track = [];
if(!empty($object)){
foreach ($object['manifest'] as $key => $field) {
array_push($track, [
"date" => date('j M Y', strtotime($field['manifest_date'])) . ' ' . Carbon::parse($field['manifest_time'])->format('H:i'),
"desc" => $field['manifest_description'] . ' [' . $field['city_name'] . ']'
]);
};
// how to pass array of ($track) to my view?
return $track;
dd(1);
}
}
}
}
thank you for your attention..
Level 54
@rarepyre your current issue is that your have set deliveries to be belongsToMany which means you are passing back an array
so in your deliveryTrack method you want to return $tracks;
and in your blade you need three foreach loops:
@foreach($resellerOrderStatus as $key => $orderStatus)
@foreach($orderStatus->delivery as $delivery)
@foreach($delivery->deliveryTrack as $deliveryTrack)
<li class="text-left">
<b>{{ $deliveryTrack->date }}</b>
<br>
{{ $deliveryTrack->desc }}
</li>
@endforeach
@endforeach;
@endforeach
1 like
Please or to participate in this conversation.