#php #database #laravel #eloquent #orm
#php #База данных #laravel #eloquent #orm
Вопрос:
У меня есть эта модель:
User:
id (int)
name (varchar)
Role:
id int
name (varchar)
User_Role
id (int)
id_role (int)
id_user (int)
id_company (int)
Что мне нужно, используя Eloquent (Laravel 7), это запросить user_role с id_company:
Это моя взаимосвязь с пользовательской моделью
public function rol() {
return $this->belongsToMany('AppModelsRole','user_role','id_user','id_role');
}
Это мое отношение к модели для подражания:
function user() {
return $this->belongsToMany('AppModelsUser','user_role','id_role','id_user');
}
Возможно ли запросить сводную таблицу следующим образом:
$user->rol->where(["id_company" => $params["id_company"]])->toArray();
Комментарии:
1. Вы пытаетесь получить список пользователей, роли которых соответствуют этому
id_company
полю?2. Привет! Я пытаюсь получить роль, соответствующую этому пользователю и
id_company
.
Ответ №1:
Сначала вам нужно включить столбцы сводной таблицы в взаимосвязь:
public function roles() {
return $this->belongsToMany('AppModelsRole','user_role','id_user','id_role')
->withPivot('id_company');
}
Затем вы можете выполнить запрос по столбцу сводной таблицы:
$user->roles()->wherePivot('id_company', $params["id_company"])
->get()
->toArray();