i have four table socket , office , container, project i need to join these table with primey table soket and add count in each table group by socket.id .
$data['socjetsreport'] = DB::table('socket')
    ->limit(5)
    ->join('attached', 'attached.socket_id', '=', 'socket.id', 'left outer')
    ->join('office', 'office.socket_id', '=', 'socket.id', 'left outer')
    ->join('container', 'container.socket_id', '=', 'socket.id', 'left outer')
    ->join('project', 'project.socket_id', '=', 'socket.id', 'left outer')
    ->join('users', 'users.id', '=', 'socket.employee_id', 'left outer')
    ->select('socket.id as id', 'socket.name as name',  'users.name as uname', 
        DB::raw("count(attached.socket_id) as attccount"))
    ->groupBy('socket.id')
    ->get();
I try to apply it in MySQL query and it run well but in laravel it just give me wrong count.
This is my MySQL query:
SELECT
    users.name,
    COUNT(*) AS attached,
    (
        SELECT COUNT(*) FROM socket
        LEFT OUTER JOIN container ON socket.id = container.socket_id
        WHERE socket.id = @id
    ) AS container,
    (
        SELECT COUNT(*) FROM socket
        LEFT OUTER JOIN project ON socket.id = project.socket_id
        WHERE socket.id = @id
    ) AS project, 
    (
        SELECT COUNT(*) FROM socket
        LEFT OUTER JOIN office ON socket.id = office.socket_id
        WHERE socket.id = @id
    ) AS office 
FROM socket
LEFT OUTER JOIN attached ON socket.id = attached.socket_id
LEFT OUTER JOIN users ON socket.employee_id = users.id WHERE socket.id = @id
GROUP BY users.name
 
    