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

dust's avatar
Level 9

Help with query

How can I write that query in Laravel?

SELECT
  parent.id,
  COUNT(*) AS childs
FROM
  categories AS parent
INNER JOIN categories AS child ON
    child.parent_id=parent.id
WHERE parent.`parent_id` = 1
GROUP BY
  parent.id

Thanks!

0 likes
2 replies
dust's avatar
Level 9

Hi @jlrdw, I've made relationships, the problem is with query itself. I think this is query builder magic. But OK, here is what I've done:

$categories = DB::table('categories AS P')
                ->selectRaw('P.*, count(*) as childs')
                ->join('categories AS C', 'C.parent_id', '=', 'P.id')
                ->where('P.parent_id', '=', 1)
                ->groupBy('P.id')
                ->get();

But does not work. I'm getting: 'dev_data.P.parent_id' isn't in GROUP BY (SQL: select P., count() as childs from categories as P inner join categories as C on C.parent_id = P.id where P.parent_id = 1 group by P.id)

That is strange, because the query from the error works in PhpMyAdmin:

select P.*, count(*) as childs from `categories` as `P` 
inner join `categories` as `C` on `C`.`parent_id` = `P`.`id` 
where `P`.`parent_id` = 1 
group by `P`.`id`

Please or to participate in this conversation.