Bom dia! Estou com um problema em uma análise combinatória, consigo retornar a quantidade certa de elementos baseadas em uma query, mas ele só traz um registro… E eu precisaria da combinação.
Essa é o SQL:
SELECT v1.value, v2.value, v3.value FROM variation_values AS v1 JOIN variation_values AS v2 ON v2.id != v1.id JOIN variation_values AS v3 ON v3.id != v1.id WHERE v1.variation_id = 1 AND v2.variation_id = 2 AND v3.variation_id = 3 order by v1.value desc;
Meu código PHP e o retorno do mesmo logo a baixo:
$query = DB::table('variation_values as v');
foreach ($variationId as $id) {
if ($variationId[0] == $id) {
$query = $query->where('v.variation_id', $id);
$query = $query->addSelect('v.value');
} else {
$query = $query->addSelect('v2.value');
$query = $query->join('variation_values as v' . $id, 'v' . $id . '.id', '!=', 'v.id');
$query = $query->where('v' . $id . '.variation_id', $id);
}
}
dd($query->get());
^ Illuminate\Support\Collection {#187 ▼
#items: array:12 [▼
0 => {#152 ▼
+"value": "Branco"
}
1 => {#181 ▼
+"value": "Preto"
}
2 => {#172 ▼
+"value": "Vermelho"
}
3 => {#177 ▼
+"value": "Branco"
}
4 => {#167 ▼
+"value": "Preto"
}
5 => {#162 ▼
+"value": "Vermelho"
}
6 => {#157 ▼
+"value": "Branco"
}
7 => {#142 ▼
+"value": "Preto"
}
8 => {#137 ▼
+"value": "Vermelho"
}
9 => {#132 ▼
+"value": "Branco"
}
10 => {#195 ▼
+"value": "Preto"
}
11 => {#192 ▼
+"value": "Vermelho"
}
]
}