Laravel ma wbudowany prosty, intuicyjny interfejs do wykonywania zapytań do bazy danych. Używając metod klasy Query Builder
możemy łatwo pobierać, dodawać, edytować i usuwać rekordy z bazy danych.
Pobieranie danych
Użyjmy fasady (klasy) DB
i jej metody table()
żeby dostać instancję query buildera dla tabeli posts
. Następnie użyjmy metody get()
żeby dostać kolekcję wszystkich rekordów z tabeli.
// routes/web.php
Route::get('posts', function () {
$posts = DB::table('posts')->get();
return view('posts.index', ['posts' => $posts]);
});
Metoda get()
zwróci kolekcję (tablicę) prostych obiektów, dzięki czemu możemy wyświetlić je w widoku w następujący sposób:
// resources/views/posts/index.blade.php
@foreach ($posts as $post) {
{{ $post->title }}
}
Załóżmy, że w tabeli mamy kolumnę views
, która zawiera informację o liczbie wyświetleń danego wpisu. Chcemy pobrać tylko te wpisy, które mają więcej niż 100 wyświetleń. Używamy metody where()
query buildera, żeby dodać warunek WHERE
do wykonywanego zapytania.
// routes/web.php
Route::get('posts', function () {
$posts = DB::table('posts')->where('views', '>', 100)->get();
return view('posts.index', ['posts' => $posts]);
});
Możemy też uporządkować czy ograniczyć liczbę wyników zapytania:
// routes/web.php
Route::get('posts', function () {
$posts = DB::table('posts')
->orderBy('views', 'desc')
->offset(100)
->limit(25)
->get();
return view('posts.index', ['posts' => $posts]);
});
Jeśli chcemy otrzymać jeden wynik z tabeli, zamiast metody get()
używamy metody first()
:
// routes/web.php
Route::get('posts/{id}', function ($id) {
$post = DB::table('posts')->where('id', $id)->first();
return view('posts.show', ['post' => $post]);
});
Wstawianie danych
Query builder pozwala też użyć metody insert()
do wstawiania danych do tabeli w bazie danych.
DB::table('posts')->insert([
'views' => 'My first post',
'body' => 'Lorem ipsum dolor sit amet',
]);
Metoda insert()
przyjmuje jako parametr tablicę kolumn i ich wartości.
Edytowanie danych
Istnieje też metoda update()
do edytowania istniejących rekordów.
DB::table('posts')
->where('id', 1)
->update([
'views' => 'My first post',
]);
Usuwanie danych
Możemy też usuwać rekordy z bazy danych za pomocą metody delete()
.
DB::table('posts')->where('id', 1)->delete();
W tej części tutoriala dowiedzieliśmy się jak używać query buildera w celu pobierania, dodawania, edytowania i usuwania danych. W następnej części nauczymy się wykonywać wszystkie te czynności za pomocą ORM Laravela, czyli Eloquenta.