feat: enhance search functionality to include parent names and related fields across categories

This commit is contained in:
hamed
2026-08-08 14:57:36 +03:30
parent 35181cd715
commit d74a351e5a
11 changed files with 250 additions and 21 deletions
@@ -138,15 +138,22 @@ class SpecialtyController extends BaseController
$qb->orderBy('s.weight', 'ASC')->addOrderBy('s.name', 'ASC');
}
// نام والد هم جستجو می‌شود: زیرتخصص‌ها را معمولاً با نام تخصص مادر می‌جویند.
if ($search !== '') {
$qb->andWhere('s.name LIKE :s')->setParameter('s', '%' . $search . '%');
$qb->andWhere('s.name LIKE :s OR s.slug LIKE :s OR p.name LIKE :s')
->setParameter('s', '%' . $search . '%');
}
$total = (clone $qb)->select('COUNT(s.id)')->getQuery()->getSingleScalarResult();
$rows = $qb->setFirstResult(($page - 1) * $limit)->setMaxResults($limit)->getQuery()->getResult();
// parent_name فقط در لیست ادمین می‌آید — والد اینجا با join هیدریت شده و
// جستجو ممکن است فرزندی را برگرداند که والدش در صفحهٔ جاری نیست.
return $this->paginated(
array_map(fn(Specialty $s) => $s->toArray(), $rows),
array_map(
static fn(Specialty $s) => $s->toArray() + ['parent_name' => $s->getParent()?->getName()],
$rows
),
(int) $total, $page, $limit
);
}