DEV Community

Cover image for Evita la excepción "Ambiguous Column"  en Eloquent.
Ariel Mejia
Ariel Mejia

Posted on • Edited on

3

Evita la excepción "Ambiguous Column" en Eloquent.

Escenario: tienes dos modelos con relaciones y deseas obtener algunas columnas de la relación.

Modelos:

User:

public function teams()
{
    return $this->belongsToMany(Team::class);
}
Enter fullscreen mode Exit fullscreen mode

Team

public function users()
{
    return $this->belongsToMany(User::class);
}
Enter fullscreen mode Exit fullscreen mode

Ahora puedes hacer un "attach" de los teams:

Team::users()->attach(auth()->user());
Enter fullscreen mode Exit fullscreen mode

y obtener la colección de usuarios por equipo:

$users = Team::users;
Enter fullscreen mode Exit fullscreen mode

Ok en este punto todo esta bien, es posible que pases datos por una API o a una vista pero tu modelo User sea muy amplio o tenga datos sensibles que no deseas que sean publicos.

posiblemente deseas mostrar solo el nombre y el email de los usuarios de cierto equipo:

$team = Team::first();
$team->users()->select(['name', 'email'])->get();
Enter fullscreen mode Exit fullscreen mode

En este punto tendras una excepción de eloquent, esto es porque el modelo User puede tener una columna que se llame "name" y el modelo Team tambien, esto es facil de evitar pasandole explicitamente el nombre de la tabla y la columna esperada.

Team::users()->select(['users.name', 'users.email'])->get();
Enter fullscreen mode Exit fullscreen mode

La misma idea aplica cuando deseas usar un metodo "where":

Team::users()->where('users.email', $request->get('email'))->get();
Enter fullscreen mode Exit fullscreen mode

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay