当我使用belongsTo没有默认密钥时,它将无法连接..
我的users表有user_id,它是一些rand和唯一的字符串,用于显示该用户 . 我的urls表有user_id和uri列,其中user_id包含用户表user_id .
在Url模型中,我有:
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(),我从与user_id连接的urls表中获取uri .
但是当我使用$ url-> user()时,我会在laravel tinker中返回null或BelongsTo类 .
谁知道为什么?
1 回答
您的
User::uri()
方法不是关系方法 .您正在使用它内部的关系方法,但是您要查询第一个结果并返回uri属性 .
您的
Url::user()
方法是一种关系方法,因为您实际上正在返回一个关系(BelongsTo)实例 . 雄辩的关系使用如下: