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?