I think you probably end up with an orWhere accepted=1 which is then the majority of the records?
try rearranging it because you want;
(pseudo)
WHERE accepted=1
AND
(where user_id = Auth::id() AND friend_id= $friend_id)
OR
(where user_id = $friend_id AND friend_id = Auth::id() )
I would try;
Friend::where('accepted',1)
->where(function($q) use ($friend_id){
$q->where('user_id', Auth::id());
$q->where('friend_id', $friend_id);
})
->orWhere(function($q) use ($friend_id){
$q->where('friend_id', Auth::id());
$q->where('user_id', $friend_id);
})
->get();