# Models

### Model

Een model in de communicatie tussen je Database en je Controller. Een model is verantwoordelijk voor het uitvoeren van de taken die de Controller vraagt. Bijvoorbeeld:

- Ik wil graag **alle** rijen ontvangen uit het **users** tabel
- Ik wil graag een nieuwe rij aanmaken in het **users** tabel

Kort gezegd is je Model dus de laag tussen je Controller en de Database.

### Hoe maak ik een model?

Bij het installeren van Laravel is er al een Model aanwezig, dit is het User model. Deze wordt standaard gebruikt om gebruikers te beheren in Laravel. Naast het standaard Model kunnen we ook een eigen model aanmaken om dit later te kunnen gebruiken. Dit doe je als volgt:<textarea readonly="readonly" spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1px; height: 1em; min-height: 1em; outline: currentcolor none medium;" tabindex="0" wrap="off"></textarea>

```
php artisan make:model Product
```

<div class="pointer-container" id="bkmrk--3" style="display: block;"><div class="pointer anim is-page-editable" style="left: 46.6583%;"><div class="input-group inline block"></div>[<svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>](http://wiki.kodeurs.nl/books/laravel/page/models/edit?content-id=bkmrk-nadat-je-een-model-h&content-text=Nadat%20je%20een%20model%20hebt%20aangemaakt%20kun%20je%20dit%20vind "Edit Content")</div></div>Nadat je een model hebt aangemaakt kun je dit vinden in de map `app/Models`**.**

In het model hoeven we alleen maar de tabelnaam te specificeren.

```PHP
class Product extends Model

{
    protected $table = 'product';
    use HasFactory;
}
```

Regel 4 uit dit voorbeeld voegen we toe aan het model `app/Models/Product.php` en we maken een link naar de tabel.

In web.php zetten we de volgende route.

```PHP
Route::get('/products', function () {
	$products = \App\Models\Product::all();
    foreach($products as $product) {
        echo "<h3>";
        echo $product['name'];
        echo "</h3>";
        echo $product['description'];
        echo "<br><br>";
    }
});
```

Dit is een route `/products` De route verwijst niet naar een Controller of naar een View. Dat doen we in de volgende stap. We zetten nu tijdelijk alle code in de route zelf.

In de code worden alle *producten* ingelezen uit de database. Daarna worden in een loop van elk product de *name* en de *description* afgedrukt.

Als we nu deze nieuwe route uitproberen dan zien we het bijvoorbeeld het volgende (in dit voorbeeld is de database gevuld met computermuizen).

[![image-1666303805958.png](https://www.roc.ovh/uploads/images/gallery/2022-10/scaled-1680-/image-1666303805958.png)](https://www.roc.ovh/uploads/images/gallery/2022-10/image-1666303805958.png)

### Inleveren

1. Een schermafdruk van de browser waarin je de URL kan zien en waarin je jouw producten laat zien (zoals bijvoorbeeld in het voorbeeld hierboven).
2. Jouw `web.php`

\--