Exercise 2: Why Two Relationship Methods Instead of One Field — Possible Solution ==================================================================== WHAT DJANGO'S SINGLE FIELD PROVIDED ------------------------------ Per this chapter, Django's ForeignKey('self', related_name='children') is one field declaration on the model that automatically provides BOTH directions of access - page.parent to read upward, and page.children.all() to read downward - because Django's own related_name mechanism automatically creates the reverse accessor from that single declaration. WHY ELOQUENT NEEDS TWO SEPARATE METHODS ------------------------------ Per this chapter, Eloquent relationships aren't declared as a single field with an automatic reverse accessor the way Django's are - each direction of a relationship has to be explicitly written as its own method. parent() explicitly defines the "read upward" direction using belongsTo(), and children() explicitly defines the "read downward" direction using hasMany() - neither method implies or automatically generates the other. Writing only parent() would give you upward access with no way to list a page's children at all; both directions require their own explicit declaration. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly explains that Django's related_name mechanism automatically derives the reverse direction from one field declaration, and correctly explains that Eloquent has no equivalent automatic-reverse mechanism, requiring both parent() and children() to be written out separately to achieve the same two-directional access.