У меня есть база данных order_details , в которой есть информация для каждого образца и для панелей каждого образца отношений.
+-----------------+-----------------+----------+--------------------+
| order_master_id | sample_acession | panel_id | sample_description |
+-----------------+-----------------+----------+--------------------+
| 1 | AA001 | 10 | Sample 1 |
| 1 | AA001 | 11 | Sample 1 |
| 1 | AA002 | 10 | Sample 2 |
| 1 | AA002 | 13 | Sample 2 |
| 1 | AA003 | 14 | Sample 3 |
| 1 | AA003 | 15 | Sample 3 |
| 1 | AA003 | 16 | Sample 3 |
+-----------------+-----------------+----------+--------------------+
И вот что я имею для контроллера
/**
* Return order details as samples (grouped by sample_accession)
*/
public function allOrderDetailsGroupedBySampleAccession(Request $request)
{
// Retrieve list of all clients that have orders
$uniqueClients = Cache::remember('billingFinanceControllerUniqueClients', 10, function () {
// Perform DB call to get list of unique clients with business_name & id
$uniqueClients = OrderMaster::query()
->leftJoin('client_master', 'order_master.client_id', '=', 'client_master.id')
->select('client_master.id','client_master.business_name')
->distinct()
->orderBy('client_master.business_name')
->get();
return $uniqueClients;
});
// Start order details query
$orderDetailsBySample = orderDetails::groupBy('sample_accession');
// Withs
if (!empty($request->with)) {
$orderDetailsBySample->with($request->with);
}
// Set number of results per page
$numberOfResultsPerPage = !empty($request->paginate) && is_numeric($request->paginate) ? floor($request->paginate) : 10;
return response()->json([
'samples' => $orderDetailsBySample->paginate($numberOfResultsPerPage),
'unique_clients' => $uniqueClients
]);
}
Я пытаюсь выяснить, как вернуть данные, аналогичные приведенным ниже, где я могу затем l oop через массив панели для каждого образец возвращен.
{
"samples": {
"current_page": 1,
"data": [
"id": 9,
"order_master_id": 1,
"sample_acession": "AA001",
"panel_id": 10,
"sample_description": "Sample 1",
"panels": [
{
"panel_id": 10,
"panel_name": "Alcohol Test",
...
},
{
"panel_id": 11,
"panel_name": "Carbon Test",
...
}
]
],
...
}
}
А вот базовый c Топор ios вызов:
axios
.get("/samples", {
params: {
with: [
'panel',
],
}
})
.then(response => {
// Handle response
})
.catch(e => {
// Handle errors
})
.finally(() => {
// Perform finally tasks
});
Я предоставил столько информации, что, по моему мнению, было бы полезно, но дайте мне знать, будет ли полезна какая-либо дополнительная информация.