Everything you need as a full stack developer

Eloquent Hiding Attributes with $hidden property

- Posted in Laravel by

TL;DR Eloquent's $hidden property allows you to conceal sensitive attributes from being populated or stored in models, enhancing security and data integrity. Simply define an array of attribute names within the $hidden property to exclude them.

The Art of Concealment: How to Hide Attributes with Eloquent's $hidden Property

As a Laravel developer, you're likely familiar with Eloquent, the powerful ORM (Object-Relational Mapping) tool that makes interacting with your database a breeze. But did you know that Eloquent has a hidden (pun intended) gem within it? The $hidden property allows you to conceal attributes from being populated or stored in your models. In this article, we'll delve into the world of attribute hiding and explore how to utilize this feature to enhance your application's security and data integrity.

Why Hide Attributes in the First Place?

Before we dive into the nitty-gritty details, let's briefly discuss why you might want to hide attributes in the first place. In many cases, certain information is sensitive or private, such as:

  • Passwords: You wouldn't want passwords to be stored in plain text, exposing your users' credentials.
  • API keys: API keys are often used for authentication and authorization purposes; hiding them from being populated can prevent unauthorized access.
  • Sensitive metadata: Some applications may have sensitive metadata, like IP addresses or location information, that shouldn't be exposed.

Using the $hidden Property

To hide attributes in your Eloquent models, you'll need to define an array of attribute names within the $hidden property. This array will contain the names of the attributes you wish to conceal from being populated.

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $hidden = [
        'password',
        'api_key',
        // Add more attributes as needed
    ];
}

Once you've defined the $hidden property, Eloquent will automatically exclude these attributes from being populated or stored in your models.

How it Works

Here's a step-by-step breakdown of how Eloquent handles hidden attributes:

  1. Population: When you retrieve a model instance using Model::find(), Model::first(), or similar methods, Eloquent will only populate the attributes defined in $fillable (if present) and ignore those listed in $hidden.
  2. Serialization: When serializing your models to JSON or other formats, Eloquent will exclude hidden attributes.
  3. Update: When updating model instances using save() or update(), Eloquent will only update the attributes that are not marked as hidden.

Conclusion

In this article, we explored how to use Eloquent's $hidden property to conceal sensitive attributes from being populated or stored in your models. By hiding these attributes, you can enhance your application's security and data integrity. Remember to carefully consider which attributes should be hidden, as they may affect your application's functionality.

Stay tuned for more Laravel tips and tricks by subscribing to our blog! Do you have any experience with attribute hiding? Share your thoughts in the comments below!

Fullstackist aims to provide immersive and explanatory content for full stack developers Fullstackist aims to provide immersive and explanatory content for full stack developers
Backend Developer 103 Being a Fullstack Developer 107 CSS 109 Devops and Cloud 70 Flask 108 Frontend Developer 357 Fullstack Testing 99 HTML 171 Intermediate Developer 105 JavaScript 206 Junior Developer 124 Laravel 221 React 110 Senior Lead Developer 124 VCS Version Control Systems 99 Vue.js 108

Recent Posts

Web development learning resources and communities for beginners...

TL;DR As a beginner in web development, navigating the vast expanse of online resources can be daunting but with the right resources and communities by your side, you'll be well-equipped to tackle any challenge that comes your way. Unlocking the World of Web Development: Essential Learning Resources and Communities for Beginners As a beginner in web development, navigating the vast expanse of online resources can be daunting. With so many tutorials, courses, and communities vying for attention, it's easy to get lost in the sea of information. But fear not! In this article, we'll guide you through the most valuable learning resources and communities that will help you kickstart your web development journey.

Read more

Understanding component-based architecture for UI development...

Component-based architecture breaks down complex user interfaces into smaller, reusable components, improving modularity, reusability, maintenance, and collaboration in UI development. It allows developers to build, maintain, and update large-scale applications more efficiently by creating independent units that can be used across multiple pages or even applications.

Read more

What is a Single Page Application (SPA) vs a multi-page site?...

Single Page Applications (SPAs) load a single HTML file initially, handling navigation and interactions dynamically with JavaScript, while Multi-Page Sites (MPS) load multiple pages in sequence from the server. SPAs are often preferred for complex applications requiring dynamic updates and real-time data exchange, but MPS may be suitable for simple websites with minimal user interactions.

Read more