Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

milanpatel's avatar

How To Get Single Array From Equivalent Join ?

I Have Two Table........ tbl_service........ and tbl_service_package.......... I am Executing Below Query And Got Response like Below.

My Code Code

$data = Tbl_service::select('service_id', 'service_title', 'total_view', 'total_click', DB::raw("IFNULL((select TRUNCATE(avg(seller_communication),1) from tbl_rating where service_id = tbl_service.service_id group by service_id),0) as avg_rating"))
                    ->with('Packages')
                    ->where('seller_id', $userId)->get();

My Result Response



{
    "data": [
        {
            "service_id": 15,
            "service_title": "marketing",
            "total_view": 460,
            "total_click": 34,
            "avg_rating": "5.0",
            "packages": [
                {
                    "package_id": 43,
                    "service_id": 15,
                    "package_description": "g",
                    "package_revision": "4",
                    "package_delivery_time": "1 Days",
                    "package_price": "5"
                },
                {
                    "package_id": 44,
                    "service_id": 15,
                    "package_description": "b",
                    "package_revision": "0",
                    "package_delivery_time": "1 Days",
                    "package_price": "5"
                },
                {
                    "package_id": 45,
                    "service_id": 15,
                    "package_description": "h",
                    "package_revision": "0",
                    "package_delivery_time": "1 Days",
                    "package_price": "5"
                }
            ]
        }
    ],
    "message": "Get List Service Successfully",
    "status": 1
}

My Expected Response Is Like Below



{
    "data": [
        {
            "service_id": 15,
            "service_title": "marketing",
            "total_view": 460,
            "total_click": 34,
            "avg_rating": "5.0",
            "packages": {
                    "package_id": 43,
                    "service_id": 15,
                    "package_description": "g",
                    "package_revision": "4",
                    "package_delivery_time": "1 Days",
                    "package_price": "5"
                }
        }
    ],
    "message": "Get List Service Successfully",
    "status": 1
}

I Just Want Only 1 Data In Packages Array.......... How Can I Do This With same Query ??

0 likes
1 reply
UsmanBasharmal's avatar

Try this I think you put the groupBy in the wrong spot

$data = Tbl_service::select('service_id', 'service_title', 'total_view', 'total_click', DB::raw("IFNULL((select 
TRUNCATE(avg(seller_communication),1) from tbl_rating where service_id = tbl_service.service_id ),0) as avg_rating"))
                ->with('Packages')
                ->where('seller_id', $userId)->groupBy('service_id')->get();

Please or to participate in this conversation.