Я пытался понять, можно ли реализовать свойства на основе запроса в Eloquent, чтобы следующая структура данных позволяла иметь свойство is_admin
в модели User, которое возвращает true
10 или false
в зависимости от того, назначена ли пользователю роль с именем Admin
.Использовать свойство на основе запроса
Поскольку отношения в некотором смысле работают так, я решил, что это будет возможно, но как именно ускользает от меня.
users
int id
string name
roles
int id
string name
user_roles
int id
int user_id
int role_id
Как выглядит поток запросов БД при выполнении этого? Все ли работает с одним запросом до тех пор, пока выполняется запрос '-> с ('role')', даже когда вы получаете много пользователей? –
Я только что понял, что Eloquent извлекает каждое ленивое загруженное отношение как отдельный запрос (один раз для 'with()', не один раз для модели). Таким образом, это работает (как и ответ ниже, который по существу идентичен), но требует загрузки дополнительных данных до определения значения. –