$relations_ids = [1, 2, 3];
Place::whereHas('comforts', function ($query) use ($relations_ids) {
$query->whereIn('id', $relations_ids);
}, '>=', count($relations_ids))->get();
Смысл в том, что количество записей, которые попадают в нужные id, не меньше количества id.
Но это работает только в том случае, если одна связанная запись не может быть привязана несколько раз.
Альтернативно, можно сделать отдельный whereHas для каждого id (естественно через цикл, чтобы код не копипастить).
Place::whereHas('comforts', function ($query) use ($relations_ids) {
$query->whereIn('id', $relations_ids[0]);
})->whereHas('comforts', function ($query) use ($relations_ids) {
$query->whereIn('id', $relations_ids[1]);
});
Не знаю, насколько это всё быстро работает, под нагрузками не проверял.
Первый способ, думаю, быстрее второго.