Merhaba,
Yine bir ilişki sorgusunda yardıma ihtiyaç duyuyorum. İstediğim düzeye getiremedim. Bu konuda yardımcı olabilecek varsa sevinirim.
SourceCategory tablosu:
id , siteID , categoryID , categoryParentID , categoryName .....
TargetCategory tablosu:
id , pCategoryID , pCategoryParentID , pCategoryName ...
Task tablosu:
id , taskCode , categoryID , pCategoryID ...
İlgili task tablosu ile ilgili şöyle bir datatable görüntüm mevcut
Görev Kodu Site Kategorisi Platform Kategorisi
TSK1024 Kategori1 > Kategori2 Akategori1 > Akategori2 > Aktagori3
Aranan bir metni tüm ağaç kırılımlarında ve task kodunda arayıp liste almak istiyorum 🙂
Yaptığım deneme:
İlk önce o kategorilerde benim siteme ait hangileri varsa şu şekilde bir arama yapıyorum. Site kategorilerininden siteye ait taskları tespit ettim.
$databaseControl = CategoryTask::whereHas("sourceCategory",
function ($query) use ($siteID) {
$query->whereHas("site", function ($query) use ($siteID) {
$query->where("id", $siteID);
});
})->get();
Ardından en son geldiğim işlem:
$databaseControl = CategoryTask::whereHas("sourceCategory",
function ($query) use ($siteID) {
$query->whereHas("site", function ($query) use ($siteID) {
$query->where("id", $siteID);
});
})
->when($search, function ($query) use ($search) {
$query->whereHas("sourceCategory", function ($query) use ($search) {
$query->where("categoryName", "LIKE", $search);
$query->orWhereHas("parent", function ($query) use ($search) {
$query->where("categoryName", "LIKE", $search);
});
});
$query->orWhereHas("targetCategory", function ($query) use ($search) {
$query->where("pCategoryName", "LIKE", $search);
$query->orWhereHas("parent", function ($query) use ($search) {
$query->where("pCategoryName", "LIKE", $search);
});
});
$query->orWhere("taskCode", "LIKE", $search);
})
->when($length, function ($query) use ($start, $length) {
return $query->skip($start)->take($length);
})
->get();
Kırılımlarda da en altı yakalayabiliyorum. Task code kısmını hiç yakalayamadım.
Search: (Büyük küçük ve i harfinde patlamamak için de bir öneri verebilir misiniz)
$search = !empty($request->input("search")["value"]) ?
"%" . mb_strtolower($request->input("search")["value"]) . "%"
: null;