Selecting all parent users and their related children
One option would be to use leftJoin() instead of join(), which will still return the record if the joining table row doesn't exist. The values will be joined as NULL.


  The LEFT JOIN keyword returns all rows from the left table (table1), with the matching rows in the right table (table2). The result is NULL in the right side when there is no match.


http://www.w3schools.com/sql/sql_join_left.asp

If you needed more control, you could always incorporate some aggregate functions in SQL to do a count an the records found, and you could perform additional conditional statements with the HAVING, instead of WHERE (which won't work) since aggregate data isn't stored in the db.