sql >> Base de Datos >  >> RDS >> Mysql

Laravel pertenece a arrojar un error indefinido

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.