Zarządzanie bazą danych to kluczowy aspekt każdej aplikacji internetowej. Laravel, popularny framework PHP, ułatwia to zadanie dzięki Eloquent ORM (mapowaniu obiektowo-relacyjnemu). Eloquent to wydajny i elegancki sposób interakcji z bazami danych za pomocą obiektów i relacji, zamiast bezpośredniego pisania zapytań SQL.
Czym jest ORM?
ORM to skrót od „Object-Relational Mapping” lub „Object-Relational Mapping”. Jest to technika programowania służąca do konwersji danych między systemem typów używanym w obiektowym języku programowania a systemem typów używanym w relacyjnej bazie danych.
Mówiąc prościej, ORM to sposób interakcji z bazą danych, tak jakby była to obiektowa baza danych.
Korzyści z korzystania z ORM
Oto kilka korzyści wynikających ze stosowania ORM podczas tworzenia oprogramowania:
- Abstrakcja bazy danych :Systemy ORM pozwalają programistom pisać zapytania w języku programowania, z którym pracują, zamiast w SQL lub innym języku zapytań do baz danych. Oznacza to, że możesz skupić się na pisaniu kodu w języku, który już znasz, co może zwiększyć Twoją produktywność.
- Niezależność systemu baz danych Dzięki ORM tworzony kod może być niezależny od bazowego systemu baz danych. Oznacza to, że można przełączyć się na inny system baz danych przy minimalnych zmianach w kodzie.
- Szybszy rozwój – Systemy ORM często oferują wiele wbudowanych funkcji, takich jak obsługa zapytań, transakcje, migracje, seedy i inne. Funkcje te mogą przyspieszyć proces tworzenia oprogramowania, eliminując konieczność ręcznego pisania kodu.
- Bezpieczeństwo :Systemy ORM często mają wbudowane zabezpieczenia przed typowymi atakami na bazy danych, takimi jak wstrzykiwanie kodu SQL. Dzięki temu Twoja aplikacja może być bezpieczniejsza.
- Integracja z kodem obiektowym Ponieważ systemy ORM pozwalają na interakcję z danymi jako obiektami, można wykorzystać wszystkie możliwości programowania obiektowego, takie jak dziedziczenie, hermetyzacja, polimorfizm itp.
- Utrzymywalność :Kod jest zazwyczaj łatwiejszy do odczytania i zrozumienia, co może sprawić, że konserwacja i aktualizowanie aplikacji będzie o wiele prostsze.
Należy zauważyć, że chociaż systemy ORM mają wiele zalet, mogą one również mieć wady, takie jak dodatkowe obciążenie i utrata kontroli nad zapytaniami do bazy danych w niektórych przypadkach. Jednak w wielu zastosowaniach korzyści płynące z korzystania z ORM znacznie przewyższają te wady.
Czym jest Eloquent ORM?
Eloquent ORM to technika, która pozwala na interakcję z bazami danych w Laravelu, tak jakby były obiektami PHP. ORM to skrót od „Object-Relational Mapping” i jest paradygmatem programowania, który konwertuje dane między niekompatybilnymi systemami za pomocą „obiektów”. Technika ta ułatwia manipulację danymi i redukuje potrzebę pisania kodu SQL.
Konfiguracja wymowna
Aby rozpocząć korzystanie z Eloquent, musimy zdefiniować modele. W Laravel każda tabela w bazie danych ma odpowiadający jej „model”, który służy do interakcji z tą tabelą.
Model Eloquent to po prostu klasa PHP domyślnie znajdująca się w katalogu app/. Aby utworzyć nowy model, możesz użyć polecenia make:model w programie artisan. Na przykład, dla tabeli „users”, możesz utworzyć model „User” za pomocą następującego polecenia:
php artisan make:model Użytkownik
Spowoduje to utworzenie nowej klasy modelu w pliku app/Models/User.php.
CRUD (Tworzenie, Odczyt, Aktualizacja, Usuwanie) z Eloquent
Dzięki Eloquent operacje CRUD (tworzenie, odczytywanie, aktualizowanie, usuwanie) są proste.
tworzyć
Aby utworzyć nowy rekord w bazie danych, wystarczy utworzyć nową instancję modelu, ustawić jej atrybuty, a następnie wywołać metodę save.
$user = nowy użytkownik;
$user->name = 'Jan Kowalski';
$user->email = 'john@example.com';
$user->password = Hash::make('hasło');
$user->save();
Czytać
Aby odczytać dane, możesz skorzystać z różnych metod dostępnych w Eloquent. Na przykład, aby pobrać wszystkich użytkowników, wykonaj następujące czynności:
$users = Użytkownik::wszyscy();
Aktualizacja rekordu jest tak prosta, jak zmiana kilku atrybutów i wywołanie metody save.
$user = Użytkownik::find(1);
$user->email = 'nowy-email@example.com';
$user->save();
usuwać
Na koniec, aby usunąć rekord, należy wywołać metodę delete.
$user = Użytkownik::find(1);
$user->delete();
Relacje z Eloquent
Eloquent ułatwia także definiowanie i zarządzanie relacjami między tabelami, takimi jak „jeden do jednego”, „jeden do wielu”, „wiele do wielu”, „poprzez jeden”, „poprzez wiele” i „wiele do wielu”. polimorficzny".
Na przykład, jeśli użytkownik ma wiele postów, możesz zdefiniować tę relację w modelu użytkownika w następujący sposób:
funkcje publiczne posts()
{
zwróć $this->hasMany('Aplikacja\Modele\Post');
}
Następnie możesz uzyskać dostęp do wszystkich postów danego użytkownika w następujący sposób:
$user = Użytkownik::find(1);
$posts = $user->posts;
Podsumowując, Eloquent ORM w Laravelu oferuje intuicyjny i elastyczny interfejs do obsługi interakcji z bazami danych. Jego obiektowe podejście i szeroki zakres funkcjonalności sprawiają, że zarządzanie bazami danych jest znacznie łatwiejsze i bardziej intuicyjne. mniej podatne na błędy.
Zaawansowane zapytania
Oprócz podstawowych operacji CRUD, Eloquent oferuje wiele metod wykonywania bardziej złożonych zapytań. Na przykład, jeśli chcesz pobrać wszystkich użytkowników z ponad 100 postami, możesz to zrobić w następujący sposób:
$users = User::has('posty', '>', 100)->get();
Lub jeśli chcesz uzyskać wszystkie posty użytkownika, które zostały utworzone w ostatnim miesiącu, możesz to zrobić w ten sposób:
$recentPosts = $user->posts()->where('created_at', '>', Carbon::now()->subMonth())->get();
funkcje złożone
Dołączyć
Aby wykonać operację łączenia, możesz użyć metody łączenia w konstruktorze zapytań Eloquent. Na przykład, jeśli chcesz pobrać wszystkich użytkowników wraz ze szczegółami ich wpisów, możesz to zrobić w następujący sposób:
$users = DB::table('users')
->dołącz('posty', 'users.id', '=', 'posty.user_id')
->select('users.*', 'posts.description')
->pobierz();
Tutaj łączymy tabele „users” i „posts”, w których „id” z tabeli „users” pasuje do „user_id” z tabeli „posts”.
Unia
Aby połączyć wyniki wielu zapytań w jeden zestaw wyników, możesz użyć metody union. Na przykład, jeśli chcesz uzyskać wszystkie posty opublikowane dzisiaj lub mające co najmniej 10 polubień, możesz to zrobić w następujący sposób:
$first = DB::table('posty')
->where('created_at', '=', Carbon::today());
$posts = DB::table('posts')
->gdzie('lubi', '>=', 10)
->union($first)
->pobierz();
Grupuj według
Metoda groupBy pozwala grupować wyniki zapytania według jednej lub kilku kolumn. Na przykład, jeśli chcesz uzyskać liczbę postów utworzonych przez każdego użytkownika, możesz to zrobić w następujący sposób:
$users = DB::table('posty')
->select('user_id', DB::raw('count(*) as total_posts'))
->grupuj według('user_id')
->pobierz();
Mający
Metoda „having” pozwala filtrować wyniki zapytania według warunku SQL „having”. Na przykład, jeśli chcesz uzyskać tylko użytkowników, którzy utworzyli więcej niż 10 postów, możesz to zrobić w następujący sposób:
$users = DB::table('posty')
->select('user_id', DB::raw('count(*) as total_posts'))
->grupuj według('user_id')
->mając('total_posts', '>', 10)
->pobierz();
Pamiętaj, że to tylko podstawowe operacje, które możesz wykonać w Eloquent. Laravel oferuje wiele dodatkowych funkcji, które pomogą Ci tworzyć bardziej złożone i zaawansowane zapytania.
Mutatory i akcesory
Eloquent oferuje również funkcjonalność mutatorów i akcesorów, które pozwalają zdefiniować sposób manipulowania atrybutami modelu podczas ich ustawiania lub pobierania. Na przykład, aby upewnić się, że wszystkie adresy e-mail użytkowników są pisane małymi literami, możesz zdefiniować mutator w modelu użytkownika w następujący sposób:
funkcja publiczna setEmailAttribute($value)
{
$this->attributes['email'] = strtolower($value);
}
Wniosek
Eloquent ORM to potężne i elastyczne narzędzie do zarządzania bazami danych w Laravel. Jego obiektowe podejście i szeroki zakres funkcjonalności sprawiają, że zarządzanie bazami danych jest o wiele łatwiejsze i przyjemniejsze. Ucząc się obsługi Eloquent, możesz znacznie zwiększyć swoją wydajność i produktywność jako programista Laravel.



