属于和HasOne在Laravel有什么区别
有谁能告诉我,在雄辩
中,BelongsTo和HasOne关系的主要区别是什么。
有谁能告诉我,在雄辩
中,BelongsTo和HasOne关系的主要区别是什么。
主要区别在于关系的哪一方持有关系的外键。调用的模型是 和 关系 中的自有模型,并持有所属模型的密钥。$this->belongsTo()
one-to-one
many-to-one
示例一对一关系:
class User extends Model {
public function car() {
// user has at maximum one car,
// so $user->car will return a single model
return $this->hasOne('Car');
}
}
class Car extends Model {
public function owner() {
// cars table has owner_id field that stores id of related user model
return $this->belongsTo('User');
}
}
示例一对多关系:
class User extends Model {
public function phoneNumbers() {
// user can have multiple phone numbers,
// so $user->phoneNumbers will return a collection of models
return $this->hasMany('PhoneNumber');
}
}
class PhoneNumber extends Model {
public function owner() {
// phone_numbers table has owner_id field that stores id of related user model
return $this->belongsTo('User');
}
}
BelongsTo是HasOne的反面。
我们可以使用 belongsTo 方法定义 hasOne 关系的反函数。以和模型为例。
User
Phone
我正在给出从用户到电话的一个关系。
class User extends Model
{
/**
* Get the phone record associated with the user.
*/
public function phone()
{
return $this->hasOne('App\Phone');
}
}
使用此关系,我能够使用用户模型获取手机模型数据。
但是使用HasOne的反过程是不可能的。例如使用电话模型的访问用户模型。
如果我想使用Phone访问用户模型,那么有必要在Phone模型中添加LegestTo。
class Phone extends Model
{
/**
* Get the user that owns the phone.
*/
public function user()
{
return $this->belongsTo('App\User');
}
}
有关更多详细信息,请参阅此链接。