нужно ли оптимизировать запрос к базе в цикле?
$roles = []// данные приходят от пользователя какие роли они выберет
foreach ($roles as $role){
$roleTemp = Role::where('slug', $role)->first();
$registeredEmployee->roles()->attach($roleTemp->id);
}
Ответы (2 шт):
Автор решения: Volloff
→ Ссылка
Очень плохая идея делать запросы к БД в цикле, даже если вам надо выбрать только одну запись
Автор решения: nomnoms12
→ Ссылка
Вы можете получить коллекцию с идентификаторами ролей, используя методы whereIn и pluck:
$rolesTempIds = Role::whereIn('slug', $roles)->pluck('id');
$registeredEmployee->roles()->attach($rolesTempIds);