Laravel Отношения 3 Модели - PullRequest
       58

Laravel Отношения 3 Модели

0 голосов
/ 12 ноября 2019

У меня есть 3 модели: Пользователь, Кампус, ПользовательСтатус. Структура выглядит следующим образом:

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');
    }

Какое отношение будет иметь кампус с пользователем?

Ответы [ 3 ]

1 голос
/ 12 ноября 2019

Вы можете использовать отношение "есть много-через".

Пожалуйста, проверьте следующий URL.

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

0 голосов
/ 12 ноября 2019

Вместо этого я использовал функцию:

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

работал для меня .. Я надеялся, что вместо этого был лучший способ установить отношения. но пока это работает. Спасибо.

0 голосов
/ 12 ноября 2019

Вы можете использовать ownToMany

Я думаю, что у вас такая же проблема, как эта, и он решает ее, используя ownToMany и «with» в запросе с eloquent Переполнение стека - подсчет отношения многие ко многим

...