Laravel 关系 3 模型

Laravel Relationship 3 Models

我有 3 个模型 User、Campus、UserStatus。结构是这样的:

Campus
 - id
 - name
User
 - id
 - name
UserStatus
 - id
 - admission_date
 - current_status
 - user_id
 - campus_id

我想知道特定校园中有多少用户。这就是我到目前为止所做的。
User.php

public function UserStatus()
    {
        return $this->hasOne('App\Models\UserStatus' , 'user_id');
    }

Campus.php

public function UserStatus()
    {
        return $this->hasMany('App\Models\UserStatus');
    }

UserStatus.php

public function User()
    {
        return $this->belongsTo('App\User', 'user_id');
    }
public function Campus()
    {
        return $this->belongsTo('App\Models\Campus', 'campus_id');
    }

校园与用户的关系是什么?

您可以使用 "has-many-through" 关系。

请检查以下内容URL。

https://laravel.com/docs/5.8/eloquent-relationships#has-many-through

你可以使用 belongsToMany

我认为您遇到了同样的问题,他在 eloquent

的查询中使用 belongsToMany 和 "with" 解决了这个问题

相反,我使用了一个函数:

public function User()
    {
        $users = \App\User::whereHas('UserStatus', function($q){
            $q->where('campus_id', $this->id);
        });
        return $users;
    }

对我有用..我希望有更好的方式来建立关系。但现在它的工作。谢谢