Laravel La tabla de auto referenciación de muchos a muchos solo funciona de una manera

He configurado la relación y los modelos de la siguiente manera:

esquema de tabla dinámica

Schema::create('friend_user', function(Blueprint $table) {
    $table->increments('id');
    $table->integer('user_id')->unsigned();
    $table->integer('friend_id')->unsigned();
    $table->timestamps();
});

sembradora de tablas dinámicas (esto define dos 'amistades' a las que pertenece el usuario '1' una donde se especifica el usuario 1 en el id_usuario y la segunda donde el usuario 1 aparece en la lista del amigo):

    $friend_user = array(
        array(
            'id' => 1,
            'user_id' => 1,
            'friend_id' => 3,
        ),
        array(
            'id' => 2,
            'user_id' => 4,
            'friend_id' => 1,
        ),

    );

Modelo de usuario

public function friends()
{
 return $this->belongsToMany('User', 'friend_user', 'user_id', 'friend_id');
}

Esto es como lo sugiere Taylor Otwell aquí:https://github.com/laravel/framework/issues/441

Todo esto funciona, pero cuando ejecuto el siguiente comando solo obtengo un resultado:

foreach(Auth::user()->friends as $i) {
    var_dump($i->id);
}

Esto devuelve el valor '3' pero no 4 como se esperaba. Entiendo por qué sucede esto (ya que user_id no es friend_id), pero ¿cómo puedo obtener esto para devolver una colección de todos los amigos que pertenecen a un usuario (es decir, todas las amistades) independientemente del extremo de la conexión (user_id o friend_id)? usuario es?

Respuestas a la pregunta(2)

Su respuesta a la pregunta