Jak wyciągnąć listę rekordów i jednocześnie rekordy

Odpowiedz Nowy wątek
2019-01-04 16:56
0

Mam taki problem mam sobie funkcje

    private function select_patients_search($name,$lastname,$pesel,$sort,$skip) {
        $patients = \App\Patient::query();
        $patients_next = \App\Patient::query();
        $patients_back = \App\Patient::query();
        if ($name != "") {
            $patients->where('name',"LIKE","%{$name}%");
            $patients_next->where('name',"LIKE","%{$name}%");
            $patients_back->where('name',"LIKE","%{$name}%");
        }
        if ($lastname != "") {
            $patients->where('lastname',"LIKE","%{$lastname}%");
            $patients_next->where('lastname',"LIKE","%{$lastname}%");
            $patients_back->where('lastname',"LIKE","%{$lastname}%");
        }
        if ($pesel != "") {
            $patients->where("date_born","LIKE","%{$date_born}%");
            $patients_next->where("date_born","LIKE","%{$date_born}%");
            $patients_back->where("date_born","LIKE","%{$date_born}%");
        }
        if ($sort != "") $patients->orderBy($sort,"desc");
        //if ($skip == 0) $patients->skip(0)->take($this->page);
        $patients->skip($this->page * $skip)->take($this->page);
        $patients_next->skip($this->page * $skip + 1)->take($this->page);
        $patients_back->skip($this->page * $skip - 1)->take($this->page);

        //if ($skip == 0) $skip = 1;

        $page1 = count($patients_next);
        $page2 = count($patients_back);
        //print $page1;
        if ($skip == 0) $this->page_back = null;
        else $this->page_back = $skip - 1;
        if ($page1 <= 0) $this->page_next = null;
        else $this->page_next = $skip + 1;
        $list = $patients->get();
        return $list;
    }

Która robi mi paginacje i teraz nie wiem jak zrobić, żeby jednocześnie w zmiennej $patients_back->skip($this->page * $skip - 1)->take($this->page); było to zapytanie i count
Próbowałem zrobić coś na zasadzie tego

$patients_back->skip($this->page * $skip - 1)->take($this->page);
$patients_back->count();

Ale to nie zwraca mi dobrych wyników.

Pozostało 580 znaków

2019-01-04 18:51

Co Ty próbujesz zrobić?
Jeżeli chcesz zrobić paginację to masz od tego metodę paginate.
Biorąc jako przykład mój poprzedni post w Twoim temacie

$patients = \App\Patient::query();

if(isset($name){
    $patients->where('name', $name)
}

if(isset($lastname){
    $patients->where('last_name', $lastname);
}

$patients->get();

jedyne co trzeba zmienić to ostatnią linijkę na

$patients->paginate();

wyjdzie:

$patients = \App\Patient::query();

if(isset($name){
    $patients->where('name', $name)
}

if(isset($lastname){
    $patients->where('last_name', $lastname);
}

$patients->paginate(20); //w środku okreslasz liczbę rekordów

po czym w blade'zie wypisujesz to za pomocą:

{{ $patients->links() }}

do poczytania masz tę stronę: https://laravel.com/docs/5.7/pagination

edytowany 2x, ostatnio: mefsh, 2019-01-04 18:53

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0