Etykiety

linux (14) php (14) Laravel (9) mysql (9) Hardware (8) Windows (6) sieci (5) PowerShell (4) software (4) MariaDB (3) apache (3) html (3) Microsoft (2) bezpieczeństwo LAN (2) cygwin (2) Akcesoria (1) CMS (1) Laptop (1) Open Office (1) drupal 7 (1) gpg (1) hosting (1) jquery (1) sieci LAN (1) xml (1) zabezpieczenie sieci LAN (1)

niedziela, 26 listopada 2017

Laravel od podstaw: tabele bazodanowe i dynamiczne widoki

W poprzedniej części niniejszego szkolenia, pt. Migracje, objaśniłem metodę tworzenia tabeli bazy danych MySQL z poziomu środowiska Laravel. W tej części skupię się na metodach wprowadzania danych do tabeli oraz na sposobach ich odczytu i przekazywania do widoków.

Laravel udostępnia wiele sposobów wprowadzania danych do istniejących tabeli bazy danych. Aby początkowo objaśnić najprostszy z nich, uruchomię z głównego katalogu naszej szkoleniowej aplikacji interfejs php artisan tinker. Php artisan tinker jest rozwiązaniem typu repl (read-eval-print loop), umożliwiającym interaktywne działania z aplikacją Laravel.

Metoda DB::table


Objaśnię na początek, jak wprowadzać dane do tabeli i wykonywać na nich niektóre typowe operacje bazodanowe, korzystając z metody Laravel DB::table() z poziomu php artisan tinker, a potem omówię jeden z podstawowych sposobów przekazywania danych do widoków.

Najprostszym sposobem wykonywania operacji bazodanowych z poziomu środowiska Laravel to korzystanie z metody DB::table(). W kolejnych częściach szkolenia przedstawię bardziej zaawansowane i bardziej efektywne narzędzia bazodanowe, lecz wymaga to wcześniejszego zapoznania się z tematem Modeli.

Przedstawię sposób pracy z metodą DB::table()->insert(), która jest w przybliżeniu odpowiednikiem SQL 'INSERT INTO'. Zaprezentuję także metodę DB::table()->get, która służy do pozyskiwania wyników, oraz sposób filtrowania wyników za pomocą klauzuli where, odpowiadająca w przybliżeniu SQL'owemu WHERE.

Przechodząc z teorii do praktyki wpisuję i zatwierdzam polecenie
php artisan tinker
Poniższy kod przedstawia popularne zastosowania metody DB::table na naszej szkoleniowej tabeli. Operacje wykonywane są z poziomu interfejsu php artisan tinker, Warto z góry przeanalizować format w jakim dane są zwracane:
>>> DB::table('posts')->insert(['title'=>'Nasz pierwszy post', 'body'=>'Lorem ipsum.... blabablabla...']);
=> true
>>> DB::table('posts')->get();
=> Illuminate\Support\Collection {#741
     all: [
       {#743
         +"id": 5,
         +"title": "Nasz pierwszy post",
         +"body": "Lorem ipsum.... blabablabla...",
         +"created_at": null,
         +"updated_at": null,
       },
     ],
   }
>>> DB::table('posts')->insert(['title'=>'Nasz drugi post', 'body'=>'Kolejny tekst...']);
=> true
>>> DB::table('posts')->get();
=> Illuminate\Support\Collection {#747
     all: [
       {#736
         +"id": 5,
         +"title": "Nasz pierwszy post",
         +"body": "Lorem ipsum.... blabablabla...",
         +"created_at": null,
         +"updated_at": null,
       },
       {#742
         +"id": 6,
         +"title": "Nasz drugi post",
         +"body": "Kolejny tekst...",
         +"created_at": null,
         +"updated_at": null,
       },
     ],
   }
>>> DB::table('posts')->where('id', '>', 5)->get();
=> Illuminate\Support\Collection {#758
     all: [
       {#755
         +"id": 6,
         +"title": "Nasz drugi post",
         +"body": "Kolejny tekst...",
         +"created_at": null,
         +"updated_at": null,
       },
     ],
   }

Metoda DB::table() pozwala wykonywać cały szereg rozmaitych zapytań SQL. Więcej informacji na ten temat znajduje się w oficjalnej dokumentacji Laravel

Istotnym faktem jest format w jakim dane są zwracane z tabeli w efekcie zastosowania metody get(). Są one zwracane w postaci kolekcji informacji klasy Illuminate\Support\Collection. Ten format można docelowo zmienić, ale jest on w istocie bardzo wygodny i przydatny.

Dynamiczne widoki


Wiemy już z poprzednich części szkolenia jak tworzyć trasy i widoki. Dowiedzieliśmy się teraz jak pozyskiwać dane z tabeli bazy danych. Możemy teraz to wszysko połączyć razem aby uzyskać dynamiczne widoki.

Otwórzmy teraz plik routes/web.php w ulubionym edytorze i dodajmy do niego następującą zawartość:
Route::get('/posty', function() {

        $posts = DB::table('posts')->get();

        return $posts;

});

Po przejściu na adres względny /posty naszej aplikacji, zobaczymy w przeglądarce następującą treść:
[{"id":5,"title":"Nasz pierwszy post","body":"Lorem ipsum.... blabablabla...","created_at":null,"updated_at":null},
{"id":6,"title":"Nasz drugi post","body":"Kolejny tekst...","created_at":null,"updated_at":null}
]

Jak widać została nam zwrócona kolekcja wartości. Wiemy już dobrze w jakiej postaci są zwracane dane z tabeli, pozyskując je w wyżej opisany sposób. Świetnie! Teraz możemy posunąć się o krok dalej i zastosować poznane przed chwilą metody do pozyskania danych z naszej szkoleniowej tabeli, a następnie przekazać je do widoku.

Stwórzmy szkoleniowy widok w pliku
resources/views/posts/index.blade.php

Zawartość pliku widoku może być następująca:
<html lang="pl">

        <head>

                <title>Szkoleniowe posty</title>

        </head>

        <body>

                <ul>

                        @foreach($posts as $post)

                                <li>{{$post->title}}</li>

                        @endforeach

                </ul>

        </body>

</html>

Dostosujmy nasz plik routes/web.php w następujący sposób:
Route::get('/posty', function() {

        $posts = DB::table('posts')->get();

        return view('posts.index', compact('posts'));

});

Po zastosowaniu opisanych zmian, pod względnym adresem /posty widnieje teraz następująca dynamiczna treść:



W tej części przedstawiłem podstawowe metody pracy z tabelami danych w Laravel. Pokazałem jak wprowadzić proste dane do tabeli oraz jak je z niej odczytać. Wyjaśniłem również jak przekazać dane z tabeli do widoku. W kolejnej części mam zamiar omówić Modele, które udostępniają o wiele skuteczniejsze metody pracy z tabelami danych.

Serdecznie zapraszam do kolejnej części niniejszego szkolenia, p.t. Modele

1 komentarz:

  1. Jeżeli interesują Cię niszowe, ale przydatne techniki informatyczne, tak jak te zamieszczone na tym blogu, to polecam program fabryka cyfrowych przemian. Jest on prowadzony przez firmę Anegis we współpracy z Microsoftem. Umożliwia on poznanie nowych mechanizmów rynku IT poprzez m. in. serię prezentacji. To dobry plan dla każdego informatyka szukającego nowych rozwiązań.

    OdpowiedzUsuń

Dodaj komentarz