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