# Это входная строка - исключения.
# Она в формате vk/1|tg/2. Я её делю по | на массив.
$exceptions = explode("|", $request->exceptions);
$ex_products = array();
$ex_country = array();
# Тут я уже буду название продукта (alias) отправлять в $ex_products
# А страну в $ex_country,
if(!empty($exceptions[0])) {
foreach ($exceptions as $ex) {
array_push($ex_products, explode("/", $ex)[0]);
array_push($ex_country, explode("/", $ex)[1]);
}
}
# На выходе получу массив с элементами vk, tg и еще один с элементами 1,2. Т.е. разделил алиасы и страны.
# Но как я думаю это возможно не стоило делать. Т.к. они должны быть связанны.
# Т.е. $ex_products[0] для этого продукта страна будет соответственно $ex_country[0].
# А как это сделать уже ниже, я не знаю.
$products_price = Price::whereIn('country_id', $ex_country)
->join('products', 'prices.product_id', '=', 'products.id')
->when($ex_products, function ($query) use($ex_products) {
return $query->whereIn('products.alias', $ex_products);
})->get();
# Там вместо whereIn должны стоять whereNotIn. Просто т.к. у меня много товаров сложно так отслеживать правильность кода.
# В общем, если мы оставляем whereIn то на выходе должны получить две записи. vk - с страной 1 и tg с страной 2.
# А по сути получаем 4 записи с vk в 1 и 2 стране и так-же ТГ.