Как получить строку из MySQL по нужным данным, находящихся в разным таблицах?
Можно попробовать так:// Модель Cloth
public function styles()
{
  return $this->belongsToMany(...);
}
И выборка:$result = Cloth::whereHas('styles', function ($q)
{
  return $q->whereIn('id', [1, 2]);
})->get();
Если правильно понял, то должно сработать.
Самое оптимальное решение сделать запрос inner join, подробности смотри тут