当我在没有默认键的情况下使用belongsTo时,它将无法连接。.
我的用户表具有user_id
,它是表示该用户的一些rand和唯一字符串。我的网址表包含user_id
和uri
列,其中user_id
包含users
表user_id
。
在网址模型中,我有:
public function user() {
return $this->belongsTo('App\User','user_id','user_id');
}
在用户模型中,我有:
public function uri() {
return $this->hasOne('App\Url', 'user_id', 'user_id')->first()->uri;
}
通过使用$user->uri()
,我从与uri
连接的urls
表中获得了user_id
。
但是当我使用$url->user()
时,会在Laravel Tinker内返回null或BelongsTo类。
有人知道为什么吗?
答案 0 :(得分:1)
您的User::uri()
方法不是关系方法。
您正在使用其中的一种关系方法,但是您正在查询它的第一个结果并返回uri属性。
您的Url::user()
方法是一种关系方法,因为您实际上正在返回一个关系(BelongsTo)实例。雄辩的关系如下:
// To get a related entity on a BelongsTo relationship, you access it as a property:
$url->user
// To query a relationship, you use it as a method:
$url->user()->where(...)->first();