What does the hasOne relationship represent in Laravel?
The hasOne relationship means one model owns exactly one related model. For example, a User has one Profile.
Click to reveal answer
beginner
What is the purpose of the belongsTo relationship in Laravel?
The belongsTo relationship means a model belongs to another model. For example, a Profile belongs to a User.
Click to reveal answer
beginner
How do you define a one-to-one relationship from User to Profile using hasOne?
In the User model, add a method:<br><pre>public function profile() {<br> return $this->hasOne(Profile::class);<br>}</pre>
Click to reveal answer
beginner
How do you define the inverse one-to-one relationship from Profile to User using belongsTo?
In the Profile model, add a method:<br><pre>public function user() {<br> return $this->belongsTo(User::class);<br>}</pre>
Click to reveal answer
intermediate
Why is it important to use hasOne and belongsTo correctly in Laravel?
Using these correctly helps Laravel know how to join tables and fetch related data easily. It keeps your code clean and your database queries efficient.
Click to reveal answer
Which Laravel method defines the model that owns the relationship in a one-to-one setup?
AhasOne
BbelongsTo
ChasMany
DmorphOne
✗ Incorrect
hasOne defines the owning side of a one-to-one relationship.
In a one-to-one relationship, which method should be used in the child model to link back to the parent?
AhasOne
BbelongsToMany
CbelongsTo
DhasMany
✗ Incorrect
belongsTo is used in the child model to point back to the parent.
If a User has one Profile, where should the foreign key be stored?
AIn the users table
BIn the profiles table
CIn a pivot table
DNo foreign key needed
✗ Incorrect
The foreign key is stored in the related model's table, here the profiles table.
Which of these is NOT a valid Laravel relationship method?
AhasTwo
BbelongsTo
ChasOne
DbelongsToMany
✗ Incorrect
hasTwo is not a Laravel relationship method.
What does the belongsTo method return in Laravel?
AA boolean value
BA collection of models
CThe related model instance
DA query builder for the related model
✗ Incorrect
belongsTo returns a query builder to fetch the related model.
Explain how to set up a one-to-one relationship between two Laravel models using hasOne and belongsTo.
Think about which model owns the other and where the foreign key lives.
You got /4 concepts.
Describe why using one-to-one relationships properly improves your Laravel application's code and database queries.
Consider how Laravel uses these relationships behind the scenes.
You got /4 concepts.
Practice
(1/5)
1. In Laravel, when defining a one-to-one relationship, which method should you use on the model that owns the other model?
easy
A. hasOne
B. belongsTo
C. hasMany
D. belongsToMany
Solution
Step 1: Understand ownership in one-to-one
The model that owns the other model is the one that does not have the foreign key.
Step 2: Identify the correct method for ownership
In Laravel, the owning model uses hasOne to define the relationship.
Final Answer:
hasOne -> Option A
Quick Check:
Owning model uses hasOne [OK]
Hint: Owning model uses hasOne, foreign key model uses belongsTo [OK]
Common Mistakes:
Using belongsTo on the owning model
Confusing hasOne with hasMany
Using belongsToMany for one-to-one
2. Which of the following is the correct syntax to define a belongsTo relationship in a Laravel model?
easy
A. public function user() { return $this->belongsTo(User::class); }
B. public function user() { return $this->belongsToMany(User::class); }
C. public function user() { return $this->hasMany(User::class); }
D. public function user() { return $this->hasOne(User::class); }
Solution
Step 1: Recall belongsTo syntax
The belongsTo method is used on the model with the foreign key and is called like return $this->belongsTo(Model::class);.
Step 2: Match the correct syntax
public function user() { return $this->belongsTo(User::class); } matches the correct belongsTo syntax exactly.
Final Answer:
public function user() { return $this->belongsTo(User::class); } -> Option A
class User extends Model {
public function profile() {
return $this->hasOne(Profile::class);
}
}
class Profile extends Model {
public function user() {
return $this->belongsTo(User::class);
}
}
What will $user->profile->phone return if the user has a profile with phone number '123-456-7890'?
medium
A. An array of profiles
B. null
C. An error because profile() is not defined
D. '123-456-7890'
Solution
Step 1: Understand the relationship
User has one Profile, so $user->profile returns the related Profile model instance.
Step 2: Access the phone attribute
Accessing $user->profile->phone returns the phone value from the Profile model, which is '123-456-7890'.
Final Answer:
'123-456-7890' -> Option D
Quick Check:
hasOne returns single related model [OK]
Hint: hasOne returns single model, access attributes directly [OK]
Common Mistakes:
Expecting an array instead of a single model
Confusing belongsTo and hasOne roles
Assuming null when profile exists
4. You have these models:
class Author extends Model {
public function biography() {
return $this->hasOne(Biography::class);
}
}
class Biography extends Model {
public function author() {
return $this->belongsTo(Author::class);
}
}
But when you try $author->biography, it returns null even though the biography exists in the database. What is the most likely cause?
medium
A. The Biography model is missing the hasOne method.
B. The Author model should use belongsTo instead of hasOne.
C. The Biography model's foreign key column name doesn't match Laravel's default 'author_id'.
D. The database table for Biography is missing entirely.
Solution
Step 1: Check foreign key conventions
Laravel expects the foreign key in Biography table to be 'author_id' by default for belongsTo.
Step 2: Identify mismatch causes null
If the foreign key column is named differently, Laravel cannot find the related record, so $author->biography returns null.
Final Answer:
The Biography model's foreign key column name doesn't match Laravel's default 'author_id'. -> Option C
Quick Check:
Foreign key name mismatch causes null relation [OK]
Hint: Check foreign key column names match Laravel defaults [OK]
Common Mistakes:
Switching hasOne and belongsTo methods incorrectly
Assuming missing method causes null instead of key mismatch
Ignoring database schema foreign key names
5. You want to create a one-to-one relationship between Car and Engine models where each car has exactly one engine. The engines table has a foreign key car_id. Which is the correct way to define the relationship in both models?
hard
A. In Car model: public function engine() { return $this->belongsTo(Engine::class); } In Engine model: public function car() { return $this->hasOne(Car::class); }
B. In Car model: public function engine() { return $this->hasOne(Engine::class); } In Engine model: public function car() { return $this->belongsTo(Car::class); }
C. In Car model: public function engine() { return $this->hasMany(Engine::class); } In Engine model: public function car() { return $this->belongsTo(Car::class); }
D. In Car model: public function engine() { return $this->belongsToMany(Engine::class); } In Engine model: public function car() { return $this->belongsToMany(Car::class); }
Solution
Step 1: Identify foreign key location
The foreign key car_id is in the engines table, so Engine belongs to Car.
Step 2: Define relationships accordingly
Car has one Engine (hasOne), Engine belongs to Car (belongsTo).
Final Answer:
Car uses hasOne, Engine uses belongsTo -> Option B
Quick Check:
Foreign key in engines means Engine belongsTo Car [OK]
Hint: Foreign key in table means that model belongsTo owner [OK]
Common Mistakes:
Reversing hasOne and belongsTo roles
Using hasMany for one-to-one
Using belongsToMany for one-to-one
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.