属于返校

时间:2018-07-30 16:19:51

标签: php laravel

当我在没有默认键的情况下使用belongsTo时,它将无法连接。.

我的用户表具有user_id,它是表示该用户的一些rand和唯一字符串。我的网址表包含user_iduri列,其中user_id包含usersuser_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类。

有人知道为什么吗?

1 个答案:

答案 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();