feat: enhance search functionality to include parent names and related fields across categories
This commit is contained in:
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user