Hey, @maska Can we solve this in below way!
// Assuming $fsoId is the ID of the FSO you're interested in
$fsoId = SPECIFIC_ID;
$fsoSummary = Fso::findOrFail($fsoId);
$assets = FsoItem::where('fso_id', $fsoId)
->where(function ($query) {
$query->whereNotExists(function ($subQuery) {
$subQuery->select('fso_item_id')
->from('com_transfers')
->whereColumn('com_transfers.fso_item_id', 'fso_items.id')
->whereColumn('com_transfers.from_type', 'fso_items.serviceable_type')
->whereColumn('com_transfers.from_id', 'fso_items.serviceable_id');
});
})
->with(['serviceable'])
->get();
$transfersCount = ComTransfer::whereIn('fso_item_id', $assets->pluck('id'))
->where(function ($query) {
$query->orWhere(function ($subQuery) {
$subQuery->whereColumn('com_transfers.from_type', 'fso_items.serviceable_type')
->whereColumn('com_transfers.from_id', 'fso_items.serviceable_id');
})
->orWhere(function ($subQuery) {
$subQuery->whereColumn('com_transfers.to_type', 'fso_items.serviceable_type')
->whereColumn('com_transfers.to_id', 'fso_items.serviceable_id');
});
})
->distinct()
->count('id');
// Combine the results into the final summary
$fsoSummary->assets = $assets;
$fsoSummary->transfersCount = $transfersCount;
return response()->json($fsoSummary);
Please let me know if it works. 👍🏻