Przejdź do treści
DedicatedPHP Kontakt

Zarządzanie bazą danych z Eloquent ORM w Laravel

Dowiedz się, jak używać Laravel ORM do łączenia się z bazami danych

Wymowny ORM

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.

Chcesz zastosować te pomysły w swoim projekcie?Omówmy Twoją platformę PHP.
Zobacz powiązaną usługę