Laravel - Relationships - One To One Defining The Inverse Of The Relationship
So, we can access the Phone
model from our User
model. Next, let's define a relationship on the Phone
model that will let us access the user that owns the phone. We can define the inverse of a hasOne
relationship using the belongsTo
method:
belongsTo(User::class);
}
}
When invoking the user
method, Eloquent will attempt to find a User
model that has an id
which matches the user_id
column on the Phone
model.
Eloquent determines the foreign key name by examining the name of the relationship method and suffixing the method name with _id
. So, in this case, Eloquent assumes that the Phone
model has a user_id
column. However, if the foreign key on the Phone
model is not user_id
, you may pass a custom key name as the second argument to the belongsTo
method:
/**
* Get the user that owns the phone.
*/
public function user()
{
return $this->belongsTo(User::class, 'foreign_key');
}
If the parent model does not use id
as its primary key, or you wish to find the associated model using a different column, you may pass a third argument to the belongsTo
method specifying the parent table's custom key:
/**
* Get the user that owns the phone.
*/
public function user()
{
return $this->belongsTo(User::class, 'foreign_key', 'owner_key');
}