Красноречиво, как соединить / связать таблицу, которая была подключена через модель? - PullRequest
0 голосов
/ 11 февраля 2020

Возможно, я неправильно формулирую вопрос, но вот краткое изложение того, что я пытаюсь выяснить.

Сейчас у меня есть три Модели, Пользователь. php, Компания. php и UserCompanies. php. В общем, у каждого пользователя из моей таблицы пользователей есть компания, из таблицы компании, и они связаны через мою таблицу usercompanies, которая содержит user_id и company_id. В моей модели для UserCompanies. php У меня есть это,

class UserCompanies extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
    /*
    |--------------------------------------------------------------------------
    | Use a centralized auth DB
    |--------------------------------------------------------------------------
    */

    protected $connection = 'mysqlauth';

    protected $table = 'user_companies';

    protected $fillable = [
        'user_id', 'company_id', 'status',
    ];

    /**
     * Get the user that owns the usercompanies.
     */
    public function user()
    {
        return $this->belongsTo(User::class)->withTrashed();
    }

    /**
     * Get the company
     */
    public function company()
    {
        return $this->belongsTo(Company::class)->withTrashed();
    }
}

Теперь просто скажите в моем контроллере, что мне нужно передать данные, которые имеют пользователей и компании, как мне это сделать? так?

/App/User::where('status', 'A')->get();
/App/Companies::where('status', 'A')->get();

// что мне делать с UserCompanies, как связать его вместе без использования foreach l oop?

1 Ответ

1 голос
/ 11 февраля 2020

Наличие модели только для сводной таблицы, такой как UserCompanies для меня, абсурдно. Если это не служит какой-либо другой цели, кроме отношений. Пожалуйста, не делайте этого.

Допустим, мы определяем отношения, подобные тем, которые существуют в моделях пользователей и компаний:

class User extends Model
{
    public function companies()
    {
        return $this->belongsToMany(Company::class, 'user_companies')
    }
}

class Company extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class, 'user_companies')
    }
}

Затем вы можете получить желаемых пользователей и компании, используя следующие условия:

User::whereHas('companies', function ($query) {
    $query->wherePivot('status', 'A');
})

Company::whereHas('users', function ($query) {
    $query->wherePivot('status', 'A');
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...