Techniki Pracy
8 godz. 33 min · Laravel · Full-stack i Programowanie
Piotr PalarzWeb DeveloperKurs ten rozpoczniemy od omówienia czym jest framework Laravel i co może Ci zaoferować. Następnie zobaczysz jak skonfigurować środowisko do pracy lokalnej w formie wirtualnej maszyny z preinstalowanymi narzędziami, tj. PHP, MySQL czy serwerem nginx. Zobaczysz w jaki sposób tworzyć nowe projekty wykorzystujące Laravel, zrozumiesz strukturę katalogów projektu i skonfigurujesz polaczenie z baza danych.
W kursie nie znajdziesz czysto teoretycznych lekcji. Każda z części przybliżać nas bowiem będzie do finalnej wersji projektu, którym będzie aplikacja internetowego bloga. Funkcjonalności, które od podstaw zaimplementujemy, to m.in. dodawanie i wyświetlanie wpisów, tworzenie i przypisywanie tagów, komentowanie, rejestracja i logowanie użytkowników czy wyszukiwarka. Każda z nich odkryje przez Toba możliwości frameworka Laravel i jego sposoby na rozwiazywanie konkretnych problemów.
Laravel to framework oparty o wzorzec MVC. Na konkretnych przykładach zobaczysz co to oznacza. Tworzyć będziemy wspólnie kontrolery, do których przypiszemy stosowne adresy URL, modele, które reprezentować będą dane, a także widoki, które te dane sformatują, wplatając je w kod HTML.
Choć aby w pełni zrozumieć omawiane zagadnienia, należy znać podstawowe koncepcje relacyjnych baz danych, to pisanie zapytań SQL nie jest czymś, to będziemy musieli robić. Wszystko to za sprawa migracji oraz Eloquenta. Te pierwsze pozwolą nam zaprojektować strukturę tabel bazy danych i jedna komenda je utworzyć, a Eloquent posłuży nam do tworzenia, zapisywania i odczytywania modeli reprezentujących te dane. Wszystko to uzyskamy pisząc wyłącznie prosty kod PHP.W kursie nie zabraknie również informacji na temat tworzenia relacji. Zobaczysz m. in. jak skojarzyć autora w wpisem, jak dodawać tagi czy komentarze.
Te dwa pojęcia, choć podobne, różnią się od siebie. Pierwsze pozwala określić, czy logujący się użytkownik jest tym, za kogo się podaje. Drugie mówi nam, czy dana osoba może wykonać zadana akcje. Oba te koncepty zobaczysz w akcji na praktycznym przykładzie. Do naszego bloga dodamy pełen system autentykacji, tj. rejestracje, logowanie, resetowanie hasła i potwierdzanie adresu email. Zalogowani użytkownicy otrzymają dzięki temu bonus w postaci niewidocznych dla pozostałych osób wpisów premium. Aby zarządzać wpisami na blogu, stworzymy mini sekcje administracyjna, do której dostęp będzie miał wyłącznie użytkownik oznaczony jako administrator. Dowiesz się wówczas nie tylko jak pokazywać pewne widoki wyłącznie zautoryzowanym osobom, ale także jak zabezpieczyć kontrolery przed nieuprawnionym dostępem.
Oprócz wymienionych wyżej tematów, w kursie poruszymy również uploadowanie plików na serwer, sposoby tworzenia i wysyłania maili, prace z Front-endem, debugowanie aplikacji, korzystanie z rozszerzeń tworzonych przez aktywna społeczność Laravel czy techniki wdrażania aplikacji do produkcji. Ostatni temat będzie o tyle ciekawy, ze jest on często pomijany w materiałach tego typu. Z tym kursem Twoja aplikacja nie pozostanie wyłącznie na dysku Twojego komputera. Dowiesz się bowiem jak skonfigurować serwer VPS tak, aby wykorzystać tzw. zero-downtime deployment. Dwie komendy wystarcza wówczas do tego, aby w kilkanaście sekund nowa wersja Twojej aplikacji ukazała się światu. A wszystko to bez przerywania jej działania nawet na ułamek sekundy i bez wykorzystania płatnych rozwiązań!
Kurs ten jest dla wszystkich tych, którzy znają już podstawy języka PHP i koncepcje relacyjnych baz danych SQL oraz chcieliby przyjemnie i wydajnie tworzyć ambitne aplikacje internetowe. Znajomość samego frameworka Laravel lub podobnych rozwiązań nie jest jednak wymagana. Praca z frameworkiem omawiana jest stopniowo, od podstaw do bardziej zaawansowanych tematów. Jeśli zatem masz głowę pełną pomysłów, a chcesz uniknąć frustracji związanej z pisaniem wszystkiego od podstaw - koniecznie sięgnij po Laravel i zobacz jak to narzędzie pozwoli skupić Ci się na tym, co istotne!
5.8.x
W tej i w kolejnej lekcji zajmiemy się możliwością dodawania do wpisów komentarzy
i znowu jest to pewnego relacja, którą musimy najpierw ustawić, ale
zanim zrobimy relacje to chciałbym żebyśmy sobie przygotowali migrację
oraz model dla komentarza, dlatego przejdziemy tutaj i
będę chciał wykonać php artisan make:migration i naziwmy
to create_comments_table, potrzebujemy osobnej
tabeli w bazie danych dla komentarzy i teraz ją sobie uzupełnimy,
migrations create_comments_table, co tam nam będzie potrzebne. Od
razu tutaj zdefiniujemy relacje, komentarz będzie musiał być przypisany do
użytkownika, dlatego zrobimy sobie tutaj unsignedBigInteger, czyli
to co widziałeś już lekcji poprzedniej i tutaj
będzie user_id, następnie zrobimy to samo i post_id, zauważ
że dwie relacje tutaj zdefiniujemy, zdefiniujemy dlatego, że komentarz będzie
przypisany i do użytkownika i do wpisu, a więc
tutaj znowu będzie relacja one to many, czyli można powiedzieć, że
jeden wpis ma wiele komentarzy. Jeden użytkownik ma
również wiele komentarzy przez siebie napisanych i teraz
data takiego komentarza, w zasadzie Jeżeli mamy tutaj table timestamp, tam jest created at,
to nie musielibyśmy już tego dodawać, ale ja zazwyczaj preferuje dodanie
sobie tak już to wcześniej ci tłumaczyłem daty
w ten sposób, okej,
no i jeszcze jedna ważna rzecz, czyli komentarz musi mieć oczywiście swoją treść,
a więc zrobimy to jako pole tekst, nie string, bo string ma tylko
255 znaków, a tekst jest bardzo długi i będziemy tam mogli
wpisać dowolną treść. Okej, jeżeli sobie to zapiszemy to możemy taką migracje
wykonać, czyli php artisan migrate i tabela
powinna zostać utworzona co możemy sobie potwierdzić odświeżając tutaj. Jak widzimy
mamy tabele comments i teraz jeszcze chciałbym generować sobie jakieś fejkowe
komentarze które będą nam potrzebne dlatego wygenerujemy sobie również fabrykę, a
więc php artisan make:factory i
nazwiemy ją CommentFactory. To wszystko
już znasz, mam nadzieję jednak że cię to nie nudzi, jeszcze kiedy to piszemy
będę chciał tutaj w tej fabryce zwrócić te rzeczy które
nam są niezbędne a więc będziemy chcieli przypisać taki wpis od razu
do użytkownika właśnie za pomocą user_id, wiemy, że my sobie generujemy
kilku użytkowników, sprawdźmy dokładnie ilu, bo to zobaczymy w seeds, czyli
na przykład UsersTableSeeder, admina oraz trzech pozostałych, czyli
będziemy mieli id od jeden do cztery, na pewno, dlatego tu możemy zrobić rand od 1 do 4,
a więc jedna z tych liczb zostanie tutaj podstawiona post_id, tutaj
kolei jeżeli dobrze pamiętam generowaliśmy sobie 10 wpisów, zgadza się mamy range od 1 do 10, dlatego
zrobimy rand 1 do 10, do któregoś tych wpisów zostanie komentarz
przypisany. Następnie date, skorzystamy z
funkcji now, żeby przypisać aktualną datę i pozostało
nam jeszcze content, tutaj skorzystamy z faker'a paragraph
i również chciałbym żeby różne były te paragrafy, więc wpiszemy sobie rand
i raz zostanie zwrócone 10 raz 20, w zasadzie pomiędzy 10, a
20 i to powinno nam sprawę załatwić i ostatnia
rzecz która nam będzie potrzebna to seeder więc wygenerujemy sobie jeden taki
make:seeder i nazwiemy
go tak jak wcześniej CommentsTableSeeder, czyli według tej samej konwencji, seeder nam
się pojawi tutaj i w
tym że skorzystamy fabryki utworzonej przed momentem, użyjemy
App Comment i chcemy
20 takich utworzyć więc zrobimy create. Oczywiście mamy
jeszcze ten problem, nie otworzyliśmy sobie modelu, ale już się tym zajmiemy i tutaj jeszcze
w tej fabryce gdzie mamy model również może musimy to podstawić jako App Comment
więc ostatnia rzecz którą należy wygenerować to jest oczywiście
model, powinniśmy to zrobić na początku make:model
i nazwiemy go Comment, OK, teraz
on oczywiście pojawił się tutaj bezpośrednio w App i będziemy mogli go sobie później uzupełnić. Natomiast
kiedy to wszystko zrobimy wygenerujemy sobie jeszcze świeże dane, więc
php artisan migrate:fresh i db:seed
również zrobimy, jeszcze uprzednio uzupełniając tutaj w tej
metodzie komentarze. A więc
coś takiego tutaj zostawimy i teraz php artisan db:seed
również weźmie pod uwagę. Zobaczmy jak wszystko się ułożyło w bazie
danych. Jeżeli jeszcze raz przyjdziemy do komentarzy. Jak widzimy mamy komentarze dla różnych użytkowników
przypisane do różnych wpisów i w zasadzie to
już nam się tutaj fajnie układa. Musimy jeszcze tylko ustawić odpowiednią relacje,
więc tak jak już widziałeś w lekcji poprzedniej, będzie to bardzo
podobne. Jeżeli sobie przejdziemy do post to będziemy mogli powiedzieć
że wpis ma wiele komentarzy to będzie oznaczało że tutaj stworzymy
sobie funkcję którą nazwiemy comments i zwrócimy
z niej this hasMany Comment
class, OK w zasadzie możemy
również do user'a dodać, że użytkownik ma wiele komentarzy, ale jeżeli wiesz że nie będziesz
nigdzie na użytkowników wywoływał takiej metody to nie musisz również tego
robić. Natomiast ważne żebyśmy to dodali do komend, czyli jak mamy tutaj komentarz,
to chcemy tą relacje tutaj ustawić. Możemy to nazwać post
i wiemy, że komentarz przynależy do wpisu.
A więc belongsTo Post
class i tutaj nic nie musimy więcej zmieniać. Powinno
nam to bez problemu zadziałać, ale na koniec jeszcze sprawdźmy w tinkerze,
czyli pobierzemy sobie jakiś pierwszy komentarz i sprawdzimy
czy jeżeli od mamy się do post, to zwróci nam wpis, do którego został przypisany. Tak też
się stało, a jeżeli ten post jest zwracany to możemy na nim od razu zobaczyć
wszystkie jego komentarze albo na przykład skorzystać tutaj
takiej metody i zobaczyć ile tych komentarzy do danego wpisu
jest. To zatem tyle w tej lekcji, w kolejnej zajmiemy się tym, aby komentarze
rzeczywiście były dodawane do wpisów za pomocą odpowiedniego pola
pod wpisem.