У меня есть 2 объекта, получаемых из Laravel Query Builder, оба объекта имеют некоторые характеристики для конкретного пользователя, оба имеют разные характеристики.что я хочу, это объединить оба объекта в один объект или массив.оба объекта имеют общий идентификатор.
Ниже приведены мои объекты.
Объект 1:
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
[0] => OrdersHistory Object
(
[timestamps] =>
[table:protected] => orders_history
[connection:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[attributes:protected] => Array
(
[walker_id] => 2002
[districts] =>
[main_city] => Riyadh
[sub_city] => Riyadh
[ofd] => 42
)
[original:protected] => Array
(
[walker_id] => 2002
[districts] =>
[main_city] => Riyadh
[sub_city] => Riyadh
[ofd] => 42
)
[relations:protected] => Array
(
)
[hidden:protected] => Array
(
)
[visible:protected] => Array
(
)
[appends:protected] => Array
(
)
[fillable:protected] => Array
(
)
[guarded:protected] => Array
(
[0] => *
)
[dates:protected] => Array
(
)
[touches:protected] => Array
(
)
[observables:protected] => Array
(
)
[with:protected] => Array
(
)
[morphClass:protected] =>
[exists] => 1
)
Объект 2:
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
[0] => DeliveryRequest Object
(
[table:protected] => delivery_request
[connection:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[timestamps] => 1
[attributes:protected] => Array
(
[confirmed_walker] => 2002
[walker] => علي 2002
[main_city] => Qunfudah
[d_city] => Qunfudah
[districts] => Al Khalidiyah, Ash Shamiyah, Ash Sharqiyyah, An Naimyyah, Al Azhar, Al Gharabi
[delivered] => 1
[undelivered] => 0
[toowner] => 0
[ree] => 0
)
Примечание: walker_id
и confirmed_walker
являются общими для обоих объектов.
Проблема:
У объекта 1 есть свойство ofd, которое я хочу объединить с объектом 2. Но существует проблемный объект 1, который может иметь walker_id, который не существует в объекте 2 как подтверждается_walker, поэтому в этом случае я хочу оф иСтатистика объекта 2 как 0.
Требуемый результат:
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
[0] => DeliveryRequest Object
(
[table:protected] => delivery_request
[connection:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[timestamps] => 1
[attributes:protected] => Array
(
[confirmed_walker] => 2002
[walker] => علي 2002
[main_city] => Qunfudah
[d_city] => Qunfudah
[districts] => Al Khalidiyah, Ash Shamiyah, Ash Sharqiyyah, An Naimyyah, Al Azhar, Al Gharabi
[delivered] => 1
[undelivered] => 0
[toowner] => 0
[ree] => 0
[ofd] => 42
)
, если walker_id не совпадает, тогда результат будет
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
[0] => DeliveryRequest Object
(
[table:protected] => delivery_request
[connection:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[timestamps] => 1
[attributes:protected] => Array
(
[confirmed_walker] => someotherwalkerId
[walker] => علي 2002
[main_city] => Qunfudah
[d_city] => Qunfudah
[districts] => Al Khalidiyah, Ash Shamiyah, Ash Sharqiyyah, An Naimyyah, Al Azhar, Al Gharabi
[delivered] => 0
[undelivered] => 0
[toowner] => 0
[ree] => 0
[ofd] => ofd from object 1
)
То, что я уже пробовал:
foreach ($withCaptain as $key => $value) { // object 1 foreach //
if (array_key_exists($key, $delivered)) { //$delivered is object2 //
$data = array(
'walker' => $value->walker_id,
'districts' => $delivered[$key]->districts,
'main_city' => $delivered[$key]->main_city,
'sub_city' => $delivered[$key]->d_city,
'ofd' => $value->ofd,
'delivered' => $delivered[$key]->delivered,
'undelivered' => $delivered[$key]->undelivered,
'returned' => ($value->ofd - ($delivered[$key]->delivered + $delivered[$key]->undelivered)),
'successRate' => round((($delivered[$key]->delivered / $value->ofd) * 100),2)
);
array_push($dataArray,$data);
}else{
$data = array(
'walker' => $value->walker_id,
'districts' => $value->districts,
'main_city' => $value->main_city,
'sub_city' => $value->sub_city,
'ofd' => $value->ofd,
'delivered' => 0,
'undelivered' => 0,
'returned' => 0,
'successRate' => 0
);
array_push($dataArray,$data);
}
}
Я думаю, что дал достаточно, но если вам нужно больше деталей, дайте мне знать.
Спасибо