Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
88.89% covered (warning)
88.89%
8 / 9
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
FamilyQueryBuilder
88.89% covered (warning)
88.89%
8 / 9
0.00% covered (danger)
0.00%
0 / 1
4.02
0.00% covered (danger)
0.00%
0 / 1
 search
88.89% covered (warning)
88.89%
8 / 9
0.00% covered (danger)
0.00%
0 / 1
4.02
1<?php
2
3namespace Domain\Category\QueryBuilders;
4
5use Domain\Category\DTOs\FamilySearchDTO;
6use Illuminate\Database\Eloquent\Builder;
7
8class FamilyQueryBuilder extends Builder
9{
10
11    /**
12     * @param FamilySearchDTO $familySearchDTO
13     * @return $this
14     */
15    public function search(FamilySearchDTO $familySearchDTO): static
16    {
17        if ($familySearchDTO->name) {
18            $this->where('name', 'ilike', '%' . $familySearchDTO->name . '%');
19        }
20
21        if ($familySearchDTO->origins) {
22            $this->whereHas('origin', function (Builder $originBuilder) use ($familySearchDTO) {
23                $originBuilder->whereIn('id', $familySearchDTO->origins);
24            });
25        }
26
27        if ($familySearchDTO->id) {
28            $this->where('id', $familySearchDTO->id);
29        }
30
31        return $this;
32    }
33}