Bird
Raised Fist0
Laravelframework~10 mins

Accessors and mutators in Laravel - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define an accessor method in a Laravel model.

Laravel
public function get[1]Attribute() {
    return strtoupper($this->attributes['name']);
}
Drag options to blanks, or click blank then click option'
AName
BNameAttribute
CgetName
Dname
Attempts:
3 left
💡 Hint
Common Mistakes
Using the attribute name in lowercase inside the method name.
Omitting 'Attribute' at the end of the method name.
2fill in blank
medium

Complete the code to define a mutator method in a Laravel model.

Laravel
public function set[1]Attribute($value) {
    $this->attributes['name'] = strtolower($value);
}
Drag options to blanks, or click blank then click option'
ANameAttribute
BsetName
Cname
DName
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase attribute name in the method name.
Omitting 'Attribute' suffix.
3fill in blank
hard

Fix the error in the accessor method name to follow Laravel conventions.

Laravel
public function get[1]() {
    return ucfirst($this->attributes['title']);
}
Drag options to blanks, or click blank then click option'
AgetTitleAttribute
Btitle
CTitleAttribute
DgetTitle
Attempts:
3 left
💡 Hint
Common Mistakes
Omitting 'Attribute' suffix.
Using lowercase attribute name in method name.
4fill in blank
hard

Fill both blanks to create a mutator that stores the email attribute in lowercase.

Laravel
public function set[1]Attribute($value) {
    $this->attributes['email'] = [2]($value);
}
Drag options to blanks, or click blank then click option'
AEmail
Bstrtolower
Cstrtoupper
Demail
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase attribute name in method name.
Using strtoupper instead of strtolower.
5fill in blank
hard

Fill all three blanks to create an accessor that returns the user's full name in uppercase.

Laravel
public function get[1]Attribute() {
    return strtoupper($this->attributes['[2]'] . ' ' . $this->attributes['[3]']);
}
Drag options to blanks, or click blank then click option'
AFullName
Bfirst_name
Clast_name
Dfullname
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase or incorrect method name format.
Using wrong attribute keys inside the method.

Practice

(1/5)
1. What is the main purpose of an accessor in a Laravel model?
easy
A. To modify the value when saving a model attribute
B. To validate model data before saving
C. To define relationships between models
D. To modify the value when retrieving a model attribute

Solution

  1. Step 1: Understand what an accessor does

    An accessor changes how you get or read a model attribute's value.
  2. Step 2: Differentiate from mutator

    A mutator changes the value when setting or saving, not getting.
  3. Final Answer:

    To modify the value when retrieving a model attribute -> Option D
  4. Quick Check:

    Accessor = get attribute value [OK]
Hint: Accessor modifies data on get, mutator on set [OK]
Common Mistakes:
  • Confusing accessor with mutator
  • Thinking accessor validates data
  • Mixing up relationships with accessors
2. Which of the following is the correct way to define an accessor for the name attribute in a Laravel model?
easy
A. public function name() { return $this->attributes['name']; }
B. public function setNameAttribute($value) { $this->attributes['name'] = strtolower($value); }
C. public function getNameAttribute($value) { return strtoupper($value); }
D. public function get_name() { return $this->name; }

Solution

  1. Step 1: Recall accessor naming convention

    Accessors use the format get{Attribute}Attribute with the attribute name capitalized.
  2. Step 2: Check method signature and return

    The method receives the raw value and returns the modified value.
  3. Final Answer:

    public function getNameAttribute($value) { return strtoupper($value); } -> Option C
  4. Quick Check:

    Accessor method = getNameAttribute [OK]
Hint: Accessor method name starts with get and ends with Attribute [OK]
Common Mistakes:
  • Using set prefix for accessor
  • Wrong method naming like get_name
  • Not returning a value
3. Given the following Laravel model code, what will $user->full_name output?
class User extends Model {
  public function getFullNameAttribute() {
    return $this->first_name . ' ' . $this->last_name;
  }
}
$user = new User();
$user->first_name = 'Jane';
$user->last_name = 'Doe';
echo $user->full_name;
medium
A. JaneDoe
B. Jane Doe
C. Error: Undefined property full_name
D. null

Solution

  1. Step 1: Understand the accessor method

    The method getFullNameAttribute concatenates first_name and last_name with a space.
  2. Step 2: Check assigned values and output

    first_name is 'Jane', last_name is 'Doe', so full_name returns 'Jane Doe'.
  3. Final Answer:

    Jane Doe -> Option B
  4. Quick Check:

    Accessor combines names with space [OK]
Hint: Accessor returns combined attributes as expected [OK]
Common Mistakes:
  • Forgetting space between names
  • Expecting property to exist without accessor
  • Confusing method name with property
4. Identify the error in this mutator method for the email attribute:
public function setEmailAttribute($email) {
  $this->email = strtolower($email);
}
medium
A. Should assign to $this->attributes['email'], not $this->email
B. Method name should be getEmailAttribute
C. Missing return statement
D. Mutators cannot modify email attribute

Solution

  1. Step 1: Check mutator assignment syntax

    Mutators must assign to $this->attributes['attribute'], not directly to $this->attribute.
  2. Step 2: Confirm method name and behavior

    Method name setEmailAttribute is correct; no return needed.
  3. Final Answer:

    Should assign to $this->attributes['email'], not $this->email -> Option A
  4. Quick Check:

    Mutator assigns to attributes array [OK]
Hint: Mutators assign to attributes array, not direct property [OK]
Common Mistakes:
  • Assigning directly to $this->property
  • Using accessor naming for mutator
  • Expecting return value in mutator
5. You want to store a user's phone number in a Laravel model, but always save it without spaces or dashes. Which mutator method correctly achieves this?
public function setPhoneNumberAttribute($value) {
  // Remove spaces and dashes
  $clean = str_replace([' ', '-'], '', $value);
  // Save cleaned number
  ???
}
hard
A. $this->attributes['phone_number'] = $clean;
B. $this->phone_number = $clean;
C. return $clean;
D. $this->setAttribute('phone_number', $value);

Solution

  1. Step 1: Understand mutator assignment

    Mutators must assign cleaned value to $this->attributes['phone_number'] to save properly.
  2. Step 2: Check other options

    Assigning to $this->phone_number is incorrect; returning value or calling setAttribute with original value won't clean data.
  3. Final Answer:

    $this->attributes['phone_number'] = $clean; -> Option A
  4. Quick Check:

    Mutator saves cleaned value to attributes array [OK]
Hint: Mutator cleans input and assigns to attributes array [OK]
Common Mistakes:
  • Assigning directly to property instead of attributes
  • Returning value instead of assigning
  • Using original value instead of cleaned
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard