[eluser]WanWizard[/eluser]
If you don't follow Datamapper's design guidelines, you're making it very difficult for yourself, and for us trying to support you.
Self relationships in a many-to-many relation are described in the manual.
This will require a relationship table called 'members_members', in which you will have the columns 'id', 'member_id', 'friend_id', and 'approved_status'.
You can then get the list of John's approved friends by using
Code:
$member = new Member();
$member->get_by_name('John');
$member->friend->where_join_field($member->friend, 'approved_status', '1')->get();