<?php
$attributeNames = ['good', 'bad', 'ugly'];
$products = Product::where(function ($query) use ($attributeNames) {
foreach ($attributeNames as $attr) {
$query->whereHas('attributes', function ($query) use ($attr) {
return $query->where('name', $attr);
});
}
})->get();
PD9waHAKCiRhdHRyaWJ1dGVOYW1lcyA9IFsnZ29vZCcsICdiYWQnLCAndWdseSddOwokcHJvZHVjdHMgPSBQcm9kdWN0Ojp3aGVyZShmdW5jdGlvbiAoJHF1ZXJ5KSB1c2UgKCRhdHRyaWJ1dGVOYW1lcykgewogICAgZm9yZWFjaCAoJGF0dHJpYnV0ZU5hbWVzIGFzICRhdHRyKSB7CiAgICAgICAgJHF1ZXJ5LT53aGVyZUhhcygnYXR0cmlidXRlcycsIGZ1bmN0aW9uICgkcXVlcnkpIHVzZSAoJGF0dHIpIHsKICAgICAgICAgICAgcmV0dXJuICRxdWVyeS0+d2hlcmUoJ25hbWUnLCAkYXR0cik7CiAgICAgICAgfSk7CiAgICB9Cn0pLT5nZXQoKTs=