Asignar valores por defecto a la relación belongsTo

laravel

Si tenemos en nuestra vista un producto que pertenece a una categoría, podemos asignar valores por defecto a la relación belongsTo, para acceder a el, haciendo algo asi:

{{ $producto->categoria->nombre }}

Pero si el producto es borrado, o no se le asigna categoría alguna, recibimos un error, del tipo “property of non-object”.

Mas sobre las relaciones Belongs to

Esto podríamos prevenirlo asi:

{{ $producto->categoria->nombre ?? '' }}

O podemos ir a la relación en Eloquent y darle valor por defecto

public function categoria()
{
    return $this->belongsTo('App\Categoria')->withDefault();
}

De ese modo la relación de la categoría(), retornara un valor vacio en el modelo Categoria, si el producto no la tuviera, entonces podemos añadir al modelo un valor por defecto, asi:

 public function categoria()
{
    return $this->belongsTo('App\Categoria')->withDefault(['nombre' => 'sin categoria]);
}

Y listo, esto es todo.

Algo más sobre relaciones en Laravel

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……

Translate »