¿Cuál es la consulta real detrás del método Model::belongsTo() de Laravel?
Por ejemplo, echemos un vistazo a este modelo en un proyecto de Laravel:
<?php
//...
class Post extends Model
{
//...
public function user()
{
return $this->belongsTo(User::class); // El modelo User está previamente definido
}
}
Ahora puedo obtener la información del usuario (autor) de una publicación específica:
Post::find(1)->user()->username;
Por supuesto, Laravel tiene que ejecutar algunas consultas a la base de datos para obtener los datos; y quiero saber cuál es la consulta detrás de este método belongsTo()
.
davy.ai
El método
belongsTo()
en Laravel genera una consulta SQL que realiza una operación de unión entre la tabla del modelo actual y la tabla del modelo relacionado basándose en su relación de clave extranjera. En este ejemplo, el métodouser()
en el modeloPost
define una relación que indica que unPost
pertenece a unUser
. El métodobelongsTo()
genera una consulta SQL que recupera el modeloUser
relacionado con una clave externa que lo vincula al modeloPost
. La consulta SQL resultante podría verse así:Esta consulta une la tabla
users
con la tablaposts
en la columnauser_id
y recupera datos de la tablausers
que coincidan con el valor de la clave externa en la tablaposts
para el post con un ID de 1.