Laravel – modele

  laravel

Tworzenie modelu

php artisan make:model NazwaModelu

Ale lepszym rozwiązaniem jest stworzenie modelu razem z powiązaniem z tabelą w bazie danych i z controllerem

nazwa modelu z wielkiej litery (tak się przyjęło)

php artisan make:model NazwaModelu -mc

gdyby pojawiły się jakieś problemy, to uruchom polecenie

composer dump-autoload

Query scopes

(omówione w oficjalnym tutku o tytule Eloquent 101)

Aby utworzyć scope, należy w modelu dodać nową funkcję, której nazwa poprzedzona jest słowem „scope”

class Task extends Model
{
    public function scopeIncomplete($query) {
    	return $query->where('completed', 0);
    }
}

następnie wywołując taką funkcję omijamy przedrostek „scope” a na końcu dodajemy coś, co będzie tym podstawwowym $query, które rozszerzamy przez scope

App\Task::incomplete()->get();

Route Model Binding

Chodzi o to, że jeżeli w routes web.php ustawisz sobie url z jakąś zmienną na końcu jak:

Route::get('/tasks/{task}', VideosController@show);

To następnie w funkcji show wyświetlenie robisz tak:

public function show($id) {
    	$task = Task::find($id);
        return $task;
}

ale możesz też skrótowo zrobić tak (z uwzględnieniem tego, że nazwa w parametrze funkcji show, musi być dokładnie taka sama jak wildcard na końcu w Route

public function show(Task $task) {
    	return $task;
}

Skrócony zapis odnoszący się do ścieżki klasy

//App\Comments
Comment::class

Slug w URL-u zamiast ID

public function getRouteKeyName(){
    return 'slug';
}

Paginacja

paginacja omówiona w bazach danych