Laravel: получить пользователей с множественным образованием по уровню образования - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть таблица по умолчанию users и моя пользовательская таблица educations в моей базе данных.В таблице educations пользователи могут сохранять истории обучения.

Пример educations данные:

------------------------------------------------------------
id | user_id | university | speciality | finish_year | level
------------------------------------------------------------
 1 |   16    |   Boston   |  Developer |    2018     |   4 
------------------------------------------------------------
 2 |   10    |   Sinergy  |   Designer |    2014     |   4 
------------------------------------------------------------
 9 |   16    |   Sinergy  |  Economist |    2010     |   8 
------------------------------------------------------------

Теперь, как я могу заставить пользователей использовать красноречие по уровням образования?

Например, получить пользователей с уровнем образования == 4

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Учитывая, что в вашей модели User есть метод educations, представляющий ассоциацию HasMany, вы можете использовать метод has (или whereHas) eloquent:

$users = App\User::whereHas('educations', function ($query) {
    $query->where('level', 4);
})->get();

Вотссылка на документы .

0 голосов
/ 27 ноября 2018

Если вы правильно настроили отношения, то в вашей модели User должно быть что-то вроде этого:

public function educations() {
    return $this->hasMany(Education::class);
}

Тогда простое использование будет следующим:

User::with(['educations' => function($query) {
    $query->where('level', 4);
}])->get()->filter(function($user) {
    return $user->educations->count() > 0;
});

Противоположный подход будет следующим:

Education::with('user')->where('level', 4)->get();

Это даст вам список образований, где уровень равен 4, и для каждого назначенного ему пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...