Sorunu çözemedim 🙂
$columns = ['pAttributeList', 'pCityList'];
whereHas("product",
function ($query) use ($siteID) {
$query->where("siteID", $siteID);
})
->when($search, function ($query) use ($columns, $search) {
return $query->whereHas('product',
function ($query) use ($search) {
$query->where("productCode", "LIKE", $search)
->orWhere("varyant1", "LIKE", $search)
->orWhere("varyantValue1", "LIKE", $search)
->orWhere("varyant2", "LIKE", $search)
->orWhere("varyantValue2", "LIKE", $search)
->orWhere("varyant3", "LIKE", $search)
->orWhere("varyantValue3", "LIKE", $search);
})
->orWhereHas("category", function ($query) use ($search) {
$query->whereRaw("JSON_SEARCH(LOWER(pParentCategories),'one',?) IS NOT NULL", [$search]);
})
->orWhere(function ($query) use ($columns, $search) {
foreach ($columns as $key => $column) {
if ($key > 0) {
$query->orWhereRaw("JSON_SEARCH(LOWER(" . $column . "),'one',?) IS NOT NULL", [$search]);
} else {
$query->whereRaw("JSON_SEARCH(LOWER(" . $column . "),'one',?) IS NOT NULL", [$search]);
}
}
});
})
Yukarıda ile şimdi şunlar sağlandı. SiteID eşleşiyor ise , kategori veya ürün tablosunda search kelimesi geçiyorsa
Ama an tabloda bulunan 2 kolonu JSON_SEARCH le döndüğümde bu sefer sadece bu 2 tabloda geçen bilgiyi arayan kişi eşleştirme görebiliyor farklı siteden. Çok acele ettim test etmeden oldu sandım 😃