Después de ayudar a través del chat, el problema era que había una columna llamada group
, y el método de relación también se llamó group
, por lo que el valor de la columna de la tabla tenía prioridad sobre el método de relación.
Cambiar el nombre del método de relación, o el group
columna a algo como group_id
son ambas soluciones adecuadas (sugiero el group_id
ruta).
Respuesta original:
Recuperas el grupo a través de una propiedad mágica, no directamente desde el método.
echo User::find(1)->group->name;
Si recupera el group()
método, devolverá el objeto de relación, no realizará ninguna consulta y buscará el objeto relacionado.
Además, Eloquent hará suposiciones sobre cuáles son los nombres de las columnas de la clave externa. Group
se traduciría automáticamente a un group_id
columna. Si tiene una columna existente llamada group
, entonces deberías especificarlo explícitamente en tu relación:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Si recibe un error "Intentando obtener la propiedad de un no objeto" para la propiedad group
, entonces su relación no arroja ningún resultado ($user->group
será NULL
). En ese momento, debe asegurarse de que su relación esté configurada correctamente (p. ej., utilizando las propiedades correctas pertenece a, tiene uno, tiene muchos, etc.) y asegúrese de que realmente tiene una entrada relacionada en su base de datos.